自++

Beinggeek 2014-02-23 11:54:28
[code=c][code=c]
main()
{
int i=3;
int j;

j = sizeof(++i+ ++i);

printf("i=%d j=%d", i ,j); //i=3, j=4 ???
}
...全文
161 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
零度的折翅 2014-02-24
  • 打赏
  • 举报
回复
sizeof不是函数,在编译时已经ok
max_min_ 2014-02-24
  • 打赏
  • 举报
回复
sizeof在编译期大小已经定了的
技术first 2014-02-24
  • 打赏
  • 举报
回复
当表达式作为sizeof的操作数时,它返回表达式的计算结果的类型大小,但是它不对表达式求值!
richyhuang 2014-02-24
  • 打赏
  • 举报
回复
sizeof不是函数,是编译的时候执行的。
  • 打赏
  • 举报
回复
不管如何你i等于几,i都是个整数,相当于sizeof(int),当然j就等于4了。
Beinggeek 2014-02-24
  • 打赏
  • 举报
回复
引用 3 楼 richyhuang 的回复:
sizeof不是函数,是编译的时候执行的。
我想起来了,sizeof()是关键字
zhuobattle 2014-02-24
  • 打赏
  • 举报
回复

//看下代码对应的汇编你就更清楚了
int i=3;//对应汇编
001B209E  mov         dword ptr [i],3  
int j;
j = sizeof(++i+ ++i);
//对应汇编,看到了吧,直接=4,i根本没计算。
001B20A5  mov         dword ptr [j],4  
原因楼上已经说了。
大奶兔白糖 2014-02-24
  • 打赏
  • 举报
回复
sizeof的结果是类型的长度啊
___________小P 2014-02-24
  • 打赏
  • 举报
回复
sizeof不是函数
  • 打赏
  • 举报
回复
sizeof的东西并不真正运算

70,020

社区成员

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

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