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'
achar
?'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);