2017-07-26 7 views
-1

()sizeof()が2バイトのshort intではなく4 bytesを返すのはなぜですか? sizeofを使用して変数のサイズを印刷すること

#include <stdio.h> 

main() 
{ 
    int a = 10,b = 20; 
    short int c; 
    short int d = sizeof(c = a+b); 
    int e = sizeof(c*d); //e holds the value of 4 rather than 2 
    double f = sizeof(e*f); 
    printf("d:%d\ne:%d\nf:%lf\n",d,e,f); 
} 

のsizeof()は2バイトであることを意味するINTのサイズではなく、短い整数を返しているのはなぜ?

+0

[sizeof(short + short)とsizeof(short)のサイズが異なる理由] [https://stackoverflow.com/q/24610737/253056] –

答えて

2

声明

sizeof(c = a+b); 

は、変数cの大きさが、発現c = a+bから計算した値の大きさを測定しません。 a+bの値はcに割り当てられていますが、式全体の値でもあります。

算術式に表示されるintより小さい格納タイプの整数値は、計算のためにint(またはunsigned int)に昇格されます。算術式の結果の格納形式はintです。これは、変数short intに格納しても影響を受けません。したがって、値はsizeof()によって返されます。

sizeof(c*d)と同じです。

関連する問題