一个编译器问题,在线等

llife 2005-03-02 08:30:54
如下程序段:
int i;
int j = i + sizeof(int)+sizeof(int);
问题:编译器是在编译时刻计算sizeof(int)+sizeof(int),还是在运行时刻计算。也就是说,在编译时,
上述是否就成为:int j = i + 8;
...全文
73 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lw1a2 2005-03-02
  • 打赏
  • 举报
回复
《C++Primer》P134:
sizeof操作符在编译时刻计算,因此被看作是常量表达式。它可以用在任何需要常量表
达式的地方。如数组的维数或模板的非类型参数。例如 :

// ok: 编译时刻常量表达式
int array[ sizeof( some_type_T )];
pcboyxhy 2005-03-02
  • 打赏
  • 举报
回复
编译时已经被替换成4+4,
然后优化为8
也就是int j = i+8;
llife 2005-03-02
  • 打赏
  • 举报
回复
我知道sizeof()是编译时搞定,我的问题是sizeof(int)+sizeof(int)在什么时候计算?编译时还是运行时?
pcboyxhy 2005-03-02
  • 打赏
  • 举报
回复
参考C99标准
pcboyxhy 2005-03-02
  • 打赏
  • 举报
回复
sizeof
The sizeof operator is a compile-time operator that returns the size, in bytes, of the argument passed to it.

llife 2005-03-02
  • 打赏
  • 举报
回复
有没有什么书籍或资料明确指出此问题的啊?
pcboyxhy 2005-03-02
  • 打赏
  • 举报
回复
这个当然是编译时计算拉

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧