当前位置: 技术问答>linux和unix
sizeof的输出值
来源: 互联网 发布时间:2015-10-30
本文导语: g环境:gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)(RH9) 在C代码中 sizeof('A')值为4 在C++代码中 sizeof('A')值为1 各位能解释一下原因吗? | 一楼什么都没说,就把楼主的话复制了一遍而以…… ...
g环境:gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)(RH9)
在C代码中
sizeof('A')值为4
在C++代码中
sizeof('A')值为1
各位能解释一下原因吗?
在C代码中
sizeof('A')值为4
在C++代码中
sizeof('A')值为1
各位能解释一下原因吗?
|
一楼什么都没说,就把楼主的话复制了一遍而以……
以下引自ISO/IEC 9899:1999
Semantics
10 An integer character constant has type int. The value of an integer character constant
containing a single character that maps to a single-byte execution character is the
numerical value of the representation of the mapped character interpreted as an integer.
可见字符常量应该是int类型的,IA32上面int是4字节(估计楼主应该用的是IA32),所以产生的sizeof的返回值就是4喽……
以下引自ISO/IEC 9899:1999
Semantics
10 An integer character constant has type int. The value of an integer character constant
containing a single character that maps to a single-byte execution character is the
numerical value of the representation of the mapped character interpreted as an integer.
可见字符常量应该是int类型的,IA32上面int是4字节(估计楼主应该用的是IA32),所以产生的sizeof的返回值就是4喽……
|
在C中,printf("%d", sizeof('A'));实际上是进行了一个类型转换(转自《C专家编程》)。
C++中很可能是有一个类型复原机制。
一般用sizeof最好不要用值当参数,用类型.sizeof(int),sizeof(char)肯定就都一样。
但不同编译器,正如somedummy所说,int和char的大小是不一样的。
C++中很可能是有一个类型复原机制。
一般用sizeof最好不要用值当参数,用类型.sizeof(int),sizeof(char)肯定就都一样。
但不同编译器,正如somedummy所说,int和char的大小是不一样的。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。