可能重复:
为什么是C字符文字整数,而不是字符?
#include<stdio.h>
int main(void)
{
char b = 'c';
printf("here size is %zu\n",sizeof('a'));
printf("here size is %zu",sizeof(b));
}
这里输出(见现场演示在这里 。)
here size is 4
here size is 1
我没有得到为什么sizeof('a')
为4?
可能重复:
为什么是C字符文字整数,而不是字符?
#include<stdio.h>
int main(void)
{
char b = 'c';
printf("here size is %zu\n",sizeof('a'));
printf("here size is %zu",sizeof(b));
}
这里输出(见现场演示在这里 。)
here size is 4
here size is 1
我没有得到为什么sizeof('a')
为4?
因为在C字符常量,如“A”具有类型int
。
有一个ç常见问题解答这个主体探析:
或许令人惊讶的, 在C字符常数是int类型的 ,所以的sizeof(“A”)是的sizeof(int)的(虽然这是在C ++不同的另一区域)。
以下是从著名的名句C
书- The C programming Language
由Kernighan & Ritchie
相对于单引号之间写入字符。
A character written between single quotes represents an integer value equal to the numerical value of the character in the machine's character set.
所以sizeof('a')
等同于sizeof(int)
“A”在默认情况下是整数,因为你得到的int大小在您的机器4个字节。
char是1个字节,因为这样你会得到1个字节。