sizeof('0')的值是多少? 我预计输出是1,但实际结果是1 4。< /P> < P>在C整数字符常量中,与C++相反的是INT.

sizeof('0')的值是多少? 我预计输出是1,但实际结果是1 4。< /P> < P>在C整数字符常量中,与C++相反的是INT.,c,char,sizeof,literals,C,Char,Sizeof,Literals,来自C标准6.4.4.4字符常数 10整型字符常量的类型为int 将引号与C++17标准5.13.3字符文本中的引号进行比较 2不以u8、u、u或L开头的字符文字是 普通字符文字。一个普通的文字 包含可在执行字符集中表示的单个c字符 具有char类型,其值等于执行字符集中c字符编码的数值 至于这个表达 #include <stdio.h> int main() { char c = '0'; printf("%d %d",sizeof(c), sizeof('0'))

来自C标准6.4.4.4字符常数

10整型字符常量的类型为int

将引号与C++17标准5.13.3字符文本中的引号进行比较

2不以u8、u、u或L开头的字符文字是 普通字符文字。一个普通的文字 包含可在执行字符集中表示的单个c字符 具有char类型,其值等于执行字符集中c字符编码的数值

至于这个表达

#include <stdio.h>
int main()
{
    char c = '0';
    printf("%d %d",sizeof(c), sizeof('0'));
    return 0;
}
然后它提供char类型的对象的大小。char类型的对象的大小始终等于1

根据C标准6.5.3.4,操作员的尺寸和校准

4当sizeof应用于具有char类型的无符号操作数时 字符,或签名字符,或其限定版本。结果为 1

请注意,函数printf的有效调用如下所示

sizeof(c)
实际上是

“0”的SizeOffici值

这是整数。因此,它是打印sisiOfint。

C++中的字符文字“0”、“a”、“d”、“…”是int类型,不同于C++,它们是char类型。

因此,您将进入C:

sizeof('0')
在C++中,你将有:

sizeof(char) == 1
sizeof('0')  == sizeof(int) // note that this is not necessarily 4!

“0”是一个整数。sizeof返回一个大小,该大小用%zu正确打印。使用%d打印大小\u t是未定义的行为。您可能会喜欢我曾经使用过的DSP,它在这台机器上有CHAR\u BIT==16和sizeofchar==sizeofint,你会收到你预期的输出……不在KLinux或EBCDIC计算机:@ PMG系统何时灭绝?@机器:当STD::感觉被添加到C++ STL。
sizeof(char) == 1
sizeof('0')  == sizeof(int) // note that this is not necessarily 4!
sizeof(char) == 1
sizeof('0')  == sizeof(char)