A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qhw_fight 中级黑马   /  2016-3-31 22:56  /  1281 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

常年被人误认为函数
sizeof 是关键字不是函数,其实就算不知道它是否为 32 个关键字之一时,我们也可以 借助编译器确定它的身份。看下面的例子:
int i=0;
A),sizeof(int); B),sizeof(i); C),sizeof int; D),sizeof i; 毫无疑问,32 位系统下 A),B)的值为 4。那 C)的呢?D)的呢?
在 32 位系统下,通过 任意一编译器调试,我们发现 D)的结果也为 4。 咦?sizeof 后面的括号呢?没有括号居然也行,那想想,函数名后面没有括号行吗?由此轻 易得出 sizeof 绝非函数。
好,再看 C)。编译器怎么怎么提示出错呢?不是说 sizeof 是个关键字,其后面的括号 可以没有么?那你想想 sizeof int 表示什么啊?int 前面加一个关键字?类型扩展?明显不 正确,我们可以在 int 前加 unsigned,const 等关键字但不能加 sizeof。好,记住:sizeof 在 计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。一般情况下, 咱也别偷这个懒,乖乖的写上括号,继续装作一个“函数”,做一个“披着函数皮的关键字”。 做我的关键字,让人家认为是函数去吧。

5 个回复

倒序浏览
按照格式来就好
回复 使用道具 举报
主要看评论                                
回复 使用道具 举报
比较幽默!
回复 使用道具 举报
学习了   
回复 使用道具 举报
写的不错哟
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马