C为什么sizeof(';a';)=4,sizeof(char)=1?

C为什么sizeof(';a';)=4,sizeof(char)=1?,c,size,byte,C,Size,Byte,我有以下代码: #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)); } 为什么'a'和字符的

我有以下代码:

#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));
}

为什么
'a'
字符的大小不同。是不是
'a'
a
char

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

sizeof((char) 'a');
char a = 'a';
sizeof(a);

sizeof('\t')
实际上是计算
int
的大小,其中
int
'\t'
的ASCII值,
sizeof('a')
'a'
int
的情况类似。C中的所有常量至少为
int
。6.4.4.4字符常量p2整数字符常量是一个由一个或多个多字节字符组成的序列,用单引号括起来,如“x”。p10整型字符常量的类型为int.6.5.3.4。。。运算符p4当sizeof应用于具有char、unsigned char或signed char(或其限定版本)类型的操作数时,结果为1。
sizeof((char) 'a');
char a = 'a';
sizeof(a);