【发布时间】:2014-07-17 12:11:57
【问题描述】:
#include <stdio.h>
#include <string.h>
main()
{
printf("%d \n ",sizeof(' '));
printf("%d ",sizeof(""));
}
输出:
4
1
为什么第一个 printf 的 o/p 为 4,此外,如果我将它作为 '' 它显示错误为错误:空字符常量但对于双引号空白,即没有任何空格就可以没有错误?
【问题讨论】:
-
' '的类型是int。""就像char array[] = { '\0' };sizeof(array) 是 1。 -
提示:始终在启用完整警告的情况下进行编译:
-Wall -Wextra -pedantic或任何适合您机器的内容。如果你这样做了,你的编译器应该警告int的隐式返回类型main,所以更正它。 -
如果你的编译器很好,它也可能会警告你错误的格式说明符:
sizeof的结果类型为size_t,printf的格式说明符为size_t是@987654335 @,不是d。