私は最近コーディングが新しく、最近遭遇したプログラムの出力に関する質問がありました。コードは次のとおりです。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;
}
このプログラムの出力は、明らかに「False。\ n」です。これに関する2つの質問があります。
- 条件文の引数が単純に変数であるとはどういう意味ですか?
- なぜ出力が「False。\ n」ですか?
ありがとうございました!アドバイスやヒントのすべての単語が大歓迎です。
基本的なCの本またはチュートリアルをお読みください。それらはStackoverflowよりもCのファンダメンタルズのための優れたリソースです。しかし要約すると、0はCでは偽であり、それ以外は真です。 '16 * 16'が' char'をオーバーフローして結果が0になるので結果はfalseです。 – kaylum
@kaylum 'unsigned char'です。 '*'のオペランドが 'int'に昇格されるので、範囲外の代入(オーバーフローではありません)が行われます。 –
[if文の整数]の複製があります(http://stackoverflow.com/questions/14646718/if-statement-integer) – Dukeling