このコードを考えると:
#include <stdio.h>
int main (void)
{
int x = 5;
double y = 6;
int z = x+y;
printf("size of z = %d bytes",sizeof(z));
return 0;
}
ラインで何が起こるかを正しく説明しているロジックはどれint z = x+yですか?
- 5 (整数、4 バイト) + 6 (倍精度、8 バイト)
- それらを追加するときに
int変換する( )double - 5.0 (double、8 バイト) + 6.0 (double、8 バイト)
- 11.0 (ダブル、8 バイト)
- しかし!
zはタイプintなので、に変換されませんdouble - 11.0 は 11 に変換されます。これ
zは ... がint!
「倍精度浮動小数点形式」を読めば、その理由がわかります。 - したがって、 z = 11 (
zは typeintであるため、サイズは4バイトです) - これが 8 バイトではなく 4 バイトです。;)
また
- 5 (整数、4 バイト) + 6 (倍精度、8 バイト)
doubleそれらを追加するときに変換intする () 暗黙の変換- 5 (整数、4 バイト) + 6 (整数、4 バイト)
- 11 (整数、4 バイト)
