2017-09-25 84 views
1

我有以下代码:C为什么sizeof('a')= 4且sizeof(char)= 1?

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char * argv[]){ 
    printf("size of tab = %d\n", sizeof('\t')); 
    printf("size of a = %d\n", sizeof('a')); 
    printf("size of char = %d\n", sizeof(char)); 
} 

输出:

size of tab = 4 
size of a = 4 
size of char = 1 

为什么是'a'的大小和char不同的尺寸。是不是'a' a char

+1

'的sizeof( '\ T')'是实际计算的大小的'int'其中'int'是' '\ t' 内的ASCII值''sizeof('a')的情况类似' –

+0

'''是'int'。 C中的所有常量至少是'int'。 – chux

+0

6.4.4.4字符常量p2 _An整数字符常量是一个或多个多字节字符的序列,用单引号括起来,如'x'._和p10中所示_An整数字符常量的类型为int._ 6.5.3.4 sizeof ...运算符p4 _当sizeof应用于具有char,unsigned char或 signed char的操作数(或其合格版本)时,结果为1._ – BLUEPIXY

回答

1

'a是包含字符a的int。 看看这些表达式的值:

sizeof((char) 'a'); 
char a = 'a'; 
sizeof(a); 
相关问题