2014-02-07 66 views
2

即使给出的条件只是t这个for循环工作。奇怪的循环条件

当它甚至没有有效的条件时,这怎么可能? 是否还有其他许多例外情况?

for (t=10; t; --t) { 
    printf("%d",t); 
}  
+3

'0 - > FALSE','! 0 - > true',这是非常多的。 – RedX

回答

2

这怎么可能当它甚至不是一个有效的条件。还有其他许多例外吗?

这是可能和有效的条件。
for循环中的第二个子表达式t用于检查t是否等于0。它相当于

for (t=10; t != 0 ; --t) {...} 
+0

谢谢你的解释:) –

+1

完成我接受了:) –

0

C中的布尔值是有效的整数。 0是错误的,并且所有的非零值都是真的。结果第二个表达式为'真',而t != 0

0

这是一个有效条件,因为t存在并且作为一个值。简而言之,条件表达式只是检查结果是否为!= 0(评估为true),否则为false。

当您使用条件运算符(==!=等),它实际上返回的结果是0或1,试试吧:

int a = 2; 
printf("Result: %d, %d\n", a == 1, a == 2);