このコードを考えると:
#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 バイト)