答复: [cpp] cloudwu大哥,请解释一下网易互动笔试题目的意义所在 8230; 8230;
Jack
maxding at tom.com
Wed Mar 22 12:08:41 CST 2006
sizeof('a')
从语法上讲,sizeof后面接的是常量表达式。
char a='a';sizeof(a);
这里sizeof后面接的是字符变量。
对于常量表达式,这里的'a'实际上是一个整型常量表达式,整型常量表达式里面就包
括了,整型数常量、枚举常量、字符常量。
可以参考C99里面的6.6.6
另外,按照标准上来说,sizeof()这种形式,括号内应该带的,是类型说明,也就是
sizeof(int)这样的
sizeof xxx,这种形式后面带的,才应该是表达式,也就是sizeof var1这样的
_____
发件人: cpp-bounces at codingnow.com [mailto:cpp-bounces at codingnow.com] 代表 Li
Jie
发送时间: 2006年3月22日 11:34
收件人: C++ Discuss Group
主题: Re: [cpp] cloudwu大哥,请解释一下网易互动笔试题目的意义所在 8230; 8230;
的确是这样。。。我以前还真不知道。。
如果是char a = 'a',则sizeof(a)结果是1。
问了几个用C的朋友,竟然没一个人知道。。。汗。。
请问这个是C89还是C99中规定的?我只知道把char赋给int时会隐式提升,怎么sizeof
也这样子
在06-3-22,Chen Shuo <giantchen at gmail.com> 写道:
我好像记得,sizeof('a') 在 C 语言和 C++ 语言里的处理方式是不同的,C 语言会把
'a' 提升为 int,而 C++ 就当成 char,会得出不同的结果。有点跑题了,呵呵。
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20060322/bebb120f/attachment.html
More information about the Cpp
mailing list