0
int main()
{
if (sizeof(int) > -1)
printf("True");
else
printf("False");
return 0 ;
}
プログラムの結果は "True"と予想されますが、実行後は "False"となります。誰もがなぜこれが事実であるか説明できますか?CのIF文の中でのsizeof演算子の動作
int main()
{
if (sizeof(int) > -1)
printf("True");
else
printf("False");
return 0 ;
}
プログラムの結果は "True"と予想されますが、実行後は "False"となります。誰もがなぜこれが事実であるか説明できますか?CのIF文の中でのsizeof演算子の動作
sizeofが返されるsize_tは、符号なしです。
比較してみると、比較のために、初心者プログラマーにとっては驚くべき結果が得られるので、ここではわかります。
基本的に、-1は非常に大きな符号なし整数に変換されるため、条件はfalseです。
結果は "驚くべき"ものではありませんが、明確に定義されています。 – Olaf
'sizeof' **演算子**の利回りは何でしたか?どのタイプ?そして、この混乱を適切にフォーマットしてください。 [ask]を読んでください。現代のコンパイラは、この比較について警告する必要があります。そうでない場合、推奨されるすべての警告を有効にします(少なくとも '-Wall -Wextra -Wconversion')。そして、常に、尋ねる前に警告の原因を修正してください。 – Olaf
Cでは、if文内のsizeof演算子は、if文の外側で動作するのとまったく同じように動作します。 –