示例代碼:
1 #include <stdio.h> 2 3 int main() 4 { 5 int a = 1, b = 2, c = 3; 6 int t = 0; 7 8 while (a<b<c) { 9 t = a; 10 a = b; 11 b = t; 12 c--; 13 } 14 15 printf("a = %d, b = %d, c = %d\n", a, b, c); 16 17 return 0; 18 }
執行結果:a = 1, b = 2, c = 1
分析:
while()的循環條件中,a<b<c究竟如何執行呢?其實很簡單,對編譯器而言,括號中a<b<c的實際判斷過程是,先判斷a>b是否為真,若為真則返回1,即(a<b)變成了1,然后再和c比較,若為假則返回0。也就是說,比較完a和b之后,(a<b)就變成了一個具體數值(1或者0),再和c作比較,因為c語言中,比較運算符結合方向是自左向右。按照這個原理,程序會循環兩次。如果括號里是while(a<b && b<c),那么程序只會循環一次。