奇怪的循环条件
问题描述:
即使给出的条件只是t
这个for循环工作。奇怪的循环条件
当它甚至没有有效的条件时,这怎么可能? 是否还有其他许多例外情况?
for (t=10; t; --t) {
printf("%d",t);
}
答
这怎么可能当它甚至不是一个有效的条件。还有其他许多例外吗?
这是可能和有效的条件。
for循环中的第二个子表达式t
用于检查t
是否等于0
。它相当于
for (t=10; t != 0 ; --t) {...}
+0
谢谢你的解释:) –
+1
完成我接受了:) –
答
C中的布尔值是有效的整数。 0是错误的,并且所有的非零值都是真的。结果第二个表达式为'真',而t != 0
答
这是一个有效条件,因为t
存在并且作为一个值。简而言之,条件表达式只是检查结果是否为!= 0
(评估为true),否则为false。
当您使用条件运算符(==
,!=
等),它实际上返回的结果是0或1,试试吧:
int a = 2;
printf("Result: %d, %d\n", a == 1, a == 2);
'0 - > FALSE','! 0 - > true',这是非常多的。 – RedX