[英]Comma inside arguments of While Loop
为计算机科学期末考试而学习。
我真的想不通这个问题。
这个 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
C. Loop Loop Loop Loop
D.什么都不打印
执行时,它会无限次打印循环。 为什么会这样? 为什么While循环的参数里面有一个逗号? 它有什么作用?
你在 while 循环的条件中拥有的是逗号 operator ,它评估其操作数并产生其最右边操作数的值。
在您的情况下,它评估i < 4
条件并丢弃它,然后将条件评估为 5。所以它本质上等同于:
while(5)
{
printf("Loop ");
i++;
}
这显然会导致无限循环,因为条件始终为真。 (请记住,任何非零值在 C 中始终为“真”)。 由于i
在无限循环中递增,也可能出现整数溢出。
它将永远循环,因为 while 循环的条件i < 4, 5
求值为5
,它不同于 0,因此在C
被认为是true
。
要了解更多信息,请阅读comma operator
: https : //en.wikipedia.org/wiki/Comma_operator
简而言之,当使用逗号运算符时,它的所有操作数都会被计算,但整个表达式采用最后一个的值。 例如:
int val = (1, 2, 3);
printf("%d\n", val);
将打印3
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.