#include <stdio.h>
#include <string.h>
main()
{
printf("%d \n ",sizeof(' '));
printf("%d ",sizeof(""));
}
Run Code Online (Sandbox Code Playgroud)
输出:
4
1
Run Code Online (Sandbox Code Playgroud)
为什么o/p为第一个printf而来4,而且如果我给它''它显示错误为错误:空字符常量但是双引号空白即没有任何空格是没有错误没有错误?
这' '是整数字符常量的例子,它有类型int(它没有被转换,它有这样的类型).第二个是"" 字符文字,它只包含一个字符即空字符,sizeof(char)因此保证是1整个数组的大小1.
在下面查看差异
#include<stdio.h>
int main()
{
char a= 'b';
printf("%d %d %d", sizeof(a),sizeof('b'), sizeof("a"));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里a定义character为其数据类型大小1 byte.
但'b'是character constant.字符常量是integera,字符常量的值是机器字符集中字符的数值.sizeof char constant只不过是int哪个is 4 byte
这是字符串文字"a"--->数组字符,其大小是字符数+ \0 (NULL).在这里2