sizeof运算符返回4(char + short)

时间:2013-07-19 10:06:41

标签: c

鉴于此代码段:

    #include <stdio.h>

    int main() {

        short i = 20;
        char c = 97;

        printf("%d, %d, %d\n", sizeof(i), sizeof(c), sizeof(c + i));

        return 0;
    }

为什么sizeof(c + i) == 4

3 个答案:

答案 0 :(得分:17)

c + i是整数表达式(整数提升!),因此sizeof()返回sizeof(int)

答案 1 :(得分:4)

  

操作时会提升小于int的整数类型   在他们身上表演。如果原始类型的所有值都可以   表示为int,较小类型的值转换为   一个int;否则,它将转换为unsigned int。

整数促销需要将每个变量(c和i)提升为int大小。

short i = 20;
char c = 97;  
//The two int values are added and the sum is truncated to fit into the char type.
char a = c + i;
printf("%d, %d, %d %d\n", sizeof(i), sizeof(c), sizeof(c + i),sizeof(a));  

2, 1, 4 1

答案 2 :(得分:3)

如果没有另外指定,则C使用int进行所有整数计算。在您的平台上,int显然是32位长,因此sizeof会返回4。如果您的编译器使用64位整数,那么它将是8