学习计算机科学决赛。
我真的无法弄清楚这个问题。
此C程序的输出是什么?
#include<stdio.h>
int main()
{
int i = 0;
while(i < 4, 5)
{
printf("Loop ");
i++;
}
return 0;
}
A。无限循环
B。。Loop Loop Loop Loop Loop Loop
C。循环循环循环
D。什么都不打印
执行后,它会无限次地打印循环。为什么会这样呢?为什么While循环的参数内有逗号?它是做什么的?
答案 0 :(得分:1)
while循环中的条件是comma operator,它会计算其操作数并产生其最右边操作数的值。
在您的情况下,它评估i < 4
条件并丢弃它,然后将该条件评估为5。因此,它基本上等同于:
while(5)
{
printf("Loop ");
i++;
}
显然,这会导致无限循环,因为条件始终为真。 (请记住,任何非零值在C中始终为“ true”)。还有integer overflow可能是由于i
在无限循环中递增。
答案 1 :(得分:1)
它将永远循环,因为while循环i < 4, 5
的条件求值为5
,它不同于0,因此在true
中被视为C
。 / p>
要了解更多信息,请阅读comma operator
:https://en.wikipedia.org/wiki/Comma_operator
简而言之,当使用逗号运算符时,将评估其所有操作数,但整个表达式将取最后一个的值。例如:
int val = (1, 2, 3);
printf("%d\n", val);
将打印3
。