我是相當新的編碼,並有一個關於我最近遇到的程序的輸出的問題。這裏的代碼:變量作爲參數爲if()
#include <stdio.h>
int main(void) {
unsigned char x = 16;
x = x * 16;
if (x) {
printf("True.\n");
}
else {
printf("False.\n");
}
return 0;
}
這個程序的輸出顯然是「假。\ n」。我有兩個問題:
- 如果條件語句的參數只是一個變量,這是什麼意思?
- 爲什麼輸出「False。\ n」?
謝謝!任何建議或提示的話,不勝感激。
請閱讀任何基本的C書或教程。對於C基礎知識,這些是比Stackoverflow更好的資源。但是總而言之,C中的0是錯誤的,其他都是真的。結果是錯誤的,因爲'16 * 16'溢出了'char',因此結果爲0. – kaylum
@kaylum它是'unsigned char'。而作爲'*'的操作數被提升爲'int'的超範圍賦值(不溢出)。 –
[if語句整數]可能重複(http://stackoverflow.com/questions/14646718/if-statement-integer) – Dukeling