我尝试在C中运行以下程序并获得一些输出。 你能帮帮我吗?
#include int main() { char x='A'; printf("%d%d%d",sizeof("3"),sizeof('3'),sizeof(3)); return 0; }
在ubuntu 11.04 32位中使用gcc收到的输出为2 4 4。
同样在其他计划中: –
#include int main() { char x='A'; printf("%d%d",sizeof('A'),sizeof(x)); return 0; }
在ubuntu 11.04 32位中使用GCC收到的输出为4 1。
你能帮我解决为什么输出是这样的吗???
在C中, char
文字是整数类型,因此sizeof('3') == sizeof(int)
。 有关详细信息,请参阅此C FAQ 。
这是C和C ++不同的领域之一(C ++ sizeof('3')
是1
)。
实际上,纠正我之前的断言sizeof("3")
将产生2,因为“3”被视为2元素字符数组。
6.3.2.1/3
除非它是sizeof运算符或一元&运算符的操作数,或者是用于初始化数组的字符串文字,否则将类型为”array of type”的表达式转换为类型为”指针的表达式type”指向数组对象的初始元素,而不是左值。
在C.
3
:整数文字,输入int
'3'
:char literal,输入int
"3"
:字符串文字:类型char[2]
在第二个示例中, x
表示char
类型的对象。
‘3’转换为int类型,即4个字节。 但是“3”是一个包含两个字节的字符串。 第一个字节是char 3,第二个是附加到所有字符串的空终止符。
“C”是
char mystring[2]; mystring[0] = 'C'; mystring[1] = ' ';
虽然’C’是
int mychar; mychar = 'C';
'3'
是一个字符常量。 在C中,字符常量具有int
类型(在C ++中,它们具有char
类型)。 因此, sizeof '3'
== sizeof (int)
。
"3"
是一个字符串文字。 它是一个2元素的char
数组(C ++中的const char
),其值为{'3', ' '}
。 sizeof (char)
== 1根据定义,因此, sizeof "3"
== 2。
3
是整数常数。 它有int
类型。 因此, sizeof 3
== sizeof (int)
。
变量x
声明为char
,因此sizeof x
== 1。
以上就是c/c++开发分享C中“3”和“3”之间的差异相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562334.html