2014-02-07 201 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);