++i+(++i)

wibnmo 2010-11-23 04:45:02
int i = 3;
int j = sizeof(++i+(++i));

i 和 j的值为什么打印出来是3 4?
希望说详细些,谢谢啦.
...全文
240 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
清香白莲 2010-11-23
  • 打赏
  • 举报
回复
明白了吗????
清香白莲 2010-11-23
  • 打赏
  • 举报
回复
sizeof中的表达式仅仅表示一个某个类型的数而已,不会影响i的值,而sizeof就会求出类型的字节数。
清香白莲 2010-11-23
  • 打赏
  • 举报
回复
sizeof是求字节数的,而后面的数是一个int型的,所以是4;
i值为3,因为后面的值是在sizeof中的,不会改变i的值,如果没有sizeof,则i的值改变。
liutengfeigo 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wibnmo 的回复:]

关键是i搞不懂为什么是3.
[/Quote]
都说了你那个括号内不进行求值啊,也就是那话是空话。等于没写
wibnmo 2010-11-23
  • 打赏
  • 举报
回复
关键是i搞不懂为什么是3.
FreddyHu 2010-11-23
  • 打赏
  • 举报
回复
你Sizeof理解错了,你在计算一个int类行
相当于:int j = sizeof(int);
所以 就是3,4
無_1024 2010-11-23
  • 打赏
  • 举报
回复
而sizeof只会对i的类型进行判断不会进行计算
無_1024 2010-11-23
  • 打赏
  • 举报
回复
j永远是4 sizeof球的是类型的长度 也就是i的类型
liutengfeigo 2010-11-23
  • 打赏
  • 举报
回复
好像我说错了,不是编译器不会进行求值。
反正是不会进行求值。
我记得是飞雪告诉我们的。
liutengfeigo 2010-11-23
  • 打赏
  • 举报
回复
sizeof(++i+(++i));//这个括号内编译器不会不进行求值的

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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