C 为什么这个程序会给出以下输出?

C 为什么这个程序会给出以下输出?,c,C,当我运行这个程序时,它的输出是 1,4,4 为什么sizeof'A'给出4个字节?“A”是否被视为整数?如果是,为什么 #include<stdio.h> int main() { char ch = 'A'; printf("%d, %d, %d", sizeof(ch), sizeof('A'), sizeof(3.14f)); return 0; } 有, 它给出了输出 1,2,4 这更令人困惑 注意:我使用compileonline.com来测试这段代码。我通常建议在类型

当我运行这个程序时,它的输出是

1,4,4

为什么sizeof'A'给出4个字节?“A”是否被视为整数?如果是,为什么

#include<stdio.h>

int main()
{
char ch = 'A';
printf("%d, %d, %d", sizeof(ch), sizeof('A'), sizeof(3.14f));
return 0;
}
有,

它给出了输出

1,2,4

这更令人困惑


注意:我使用compileonline.com来测试这段代码。

我通常建议在类型或变量上使用sizeof。在文字常量上使用sizeof似乎令人困惑,但在编译时计算1+其字符串长度的文字字符串可能除外

文字“A”在C中是一个int,在您的计算机上大小为4

文本字符串A与

   const char literal_A_string[] = {'A', (char)0};

其大小显然是2个字节,因为每个文本字符串都附加了一个终端空字节。

我通常建议在类型或变量上使用sizeof。在文字常量上使用sizeof似乎令人困惑,但在编译时计算1+其字符串长度的文字字符串可能除外

文字“A”在C中是一个int,在您的计算机上大小为4

文本字符串A与

   const char literal_A_string[] = {'A', (char)0};
其大小显然是2字节,因为每个文本字符串都附加了一个终端空字节。

在C中,“a”的类型是int,这解释了为什么sizeof'a”是4,因为您的平台显然有32位int。有关更多信息,请参阅

编译为C++时,第一个程序打印1个1。 A是由字母A后跟NUL字符组成的字符串文字。因为它有两个字符长,所以sizeofA是2。

在C中,“A”的类型是int,这解释了为什么sizeofA是4,因为您的平台显然有32位int。有关更多信息,请参阅

编译为C++时,第一个程序打印1个1。


A是由字母A后跟NUL字符组成的字符串文字。因为它有两个字符长,所以sizeofA是2。

1。sizeof运算符提供输入参数的大小。 2.变量的大小取决于machinecomplier。在您的情况下,它是32位的。 3.sizeofch=1,因为您声明为char。 4.sizeof'A'=4,因为编译器将文本常量视为整数。 5.sizeofA=2,因为它是一个2字节的字符串。在大小写字符串中,如果你写一个字符,编译器也会在末尾插入空字符。因此它的大小是2字节。
4.sizeof3.13f=4,因为它的浮点大小是4字节

1。sizeof运算符提供输入参数的大小。 2.变量的大小取决于machinecomplier。在您的情况下,它是32位的。 3.sizeofch=1,因为您声明为char。 4.sizeof'A'=4,因为编译器将文本常量视为整数。 5.sizeofA=2,因为它是一个2字节的字符串。在大小写字符串中,如果你写一个字符,编译器也会在末尾插入空字符。因此它的大小是2字节。
4.sizeof3.13f=4,因为它的浮点大小是4字节

Ahh。谢谢你的帮助。谢谢你的帮助。我不知道。谢谢,我不知道。谢谢。哪个处理器给出33位?哪个处理器给出33位?
   const char literal_A_string[] = {'A', (char)0};