C:sizeof()相关的疑惑?

shi*_*ivi 6 c sizeof

#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,而且如果我给它''它显示错误为错误:空字符常量但是双引号空白即没有任何空格是没有错误没有错误?

Grz*_*ski 8

' '整数字符常量的例子,它有类型int(它没有被转换,它这样的类型).第二个是"" 字符文字,它只包含一个字符即空字符,sizeof(char)因此保证是1整个数组的大小1.


Ani*_*nge 6

' '转换为一个整数的字符常数(在机器上,因此4个字节)""为空字符数组,这仍然是1个字节结束("\ 0").


vin*_*yal 5

在下面查看差异

 #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