【问题标题】:While loop go into infinite loop when 0,1当0,1时循环进入无限循环
【发布时间】:2017-03-06 12:43:49
【问题描述】:

为什么这段代码没有打印出来很棒

#include <iostream>
using namespace std;
int main() {
    while (1, 0) {
        cout << "awesome\n";
    }
    return 0;
}

但是这段代码打印了很棒的 Infinite times

#include <iostream>
using namespace std;
int main() {
    while (0, 1) {
        cout << "awesome\n";
    }
    return 0;
}

我正在使用 g++ 编译器

【问题讨论】:

    标签: while-loop infinite-loop


    【解决方案1】:

    因为 while 循环不关心表达式的第一部分。

    #include<iostream>
       using namespace std;
    
    int main(){
       while(0 <- ,1){cout<<"awesome\n";}
       return 0;
    }
    

    这部分将被忽略。使用 -Wall 编译代码。

    如果这部分将被忽略,则代码在第一个示例中为假,在最后一个示例中为真。

    【讨论】:

    • 它确实关心第一部分,它只是不使用结果。如果你有一个 int 并在这里增加它,它会工作
    • 是的,你是对的。但是 while 表达式并不关心它。
    【解决方案2】:

    因为您使用的是逗号运算符 (Does while loop have two Arguments?),它计算第一个操作数(在逗号之前)并返回第二个。

    这意味着在您的第一个循环中,您正在执行 while(0),并且 0 被评估为 false(立即结束)。在你的第二个你做while(1),并且1被评估为true(无限循环)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多