C語言基礎
int x = 5;
if (x = 0)
printf("zero ");
else
printf("nonzero ");
printf("%d\n", x);執行上方在 if 敘述的條件中寫了 = 的程式碼時的輸出,下列何者正確?
- Azero 0
- Bnonzero 5
- Cnonzero 0
查看答案與解析
正確答案:C. nonzero 0
if 條件中的 x = 0 不是比較用的 ==,而是指派。x 被放入0,指派運算式的值也是0,因此條件判斷為偽,顯示 else 一側的「nonzero」。接著的 printf 顯示因指派而變成0的 x。在 gcc 中加上 -Wall 會對這種寫法發出警告,因此啟用警告比較容易發現錯誤。
- A. 指派運算式的值是被指派的0,因此條件為偽,不會顯示 zero。
- B. x = 0 不是比較而是指派,因此 x 已變成0。
- C. 正確。x 被指派為0,條件為偽。