答复: [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