我們知道,在C 語言中經常使用 諸如 if(表達式){} ,while (表達式) {} 形式的判斷語句,當表達式為真時執行 {} 中的函數體,但是當表達式為賦值表達式時怎么判斷該表達式為真還是為假?或者當表達式為逗號表達式式又該怎么使用?
記住一個原則:C語言賦值表達式所代表的值就是被賦值變量最終被賦予的值。
以下測試代碼可以證明以上觀點:

1 #include <stdio.h> 2 3 int main(int argc, const char *argv[]) 4 { 5 int i; 6 printf("the value is %d\n", i = -1); 7 printf("the value is %d\n", i =123); 8 printf("the value is %d\n", i = 0); 9 return 0; 10 }
那么以下代碼的結果就很好理解了!
1 #include <stdio.h> 2 3 int main(int argc, const char *argv[]) 4 { 5 int i; 6 //當賦值為0時賦值表達式代表的邏輯值為假,所以下列語句不會執行 7 if (i=0) { 8 printf("i=0\n"); 9 } 10 //當賦值為非0時賦值表達式代表的邏輯值為真,所以下列語句會執行 11 if (i=1) { 12 printf("i=1\n"); 13 } 14 //當賦值為非0時賦值表達式代表的邏輯值為真,所以下列語句會執行 15 if (i=-1) { 16 printf("i=-1\n"); 17 } 18 //逗號表達式代表的邏輯值為最后一個表達式的邏輯值,所以下列語句不會執行 19 if (i=1,i=0) { 20 printf("i=1,i=0\n"); 21 } 22 //逗號表達式代表的邏輯值為最后一個表達式的邏輯值,所以下列語句會執行 23 if (i=0,i=1) { 24 printf("i=0,i=1\n"); 25 } 26 27 28 29 return 0; 30 }