自增大总结:i=(i++)+(++i)另i=?
来源:互联网 发布:pyside 网络编程 编辑:程序博客网 时间:2024/05/21 07:01
源代码:
#include <stdio.h>
int main()
{
int i = 1, j = 1, k;
i = (i++) + (++i);
printf("i=%d /n", i);
k = (j++) + (++j);
printf("j=%d, k=%d/n", j, k);
}
执行结果:
i=5
j=3, k=4
关键的汇编码片段:
movl $0x1,0xfffffff0(%ebp)
movl $0x1,0xfffffff4(%ebp)
addl $0x1,0xfffffff0(%ebp)
mov 0xfffffff0(%ebp),%eax
add %eax,0xfffffff0(%ebp)
addl $0x1,0xfffffff0(%ebp)
mov 0xfffffff0(%ebp),%eax
mov %eax,0x4(%esp)
movl $0x8048500,(%esp)
call 80482f8 <printf@plt>
addl $0x1,0xfffffff4(%ebp)
mov 0xfffffff4(%ebp),%eax
add 0xfffffff4(%ebp),%eax
mov %eax,0xfffffff8(%ebp)
addl $0x1,0xfffffff4(%ebp)
mov 0xfffffff8(%ebp),%eax
mov %eax,0x8(%esp)
mov 0xfffffff4(%ebp),%eax
mov %eax,0x4(%esp)
movl $0x8048507,(%esp)
call 80482f8 <printf@plt>
发现,先执行++i,最后执行i++。
i = (i++) + (i++),i是不是等于2(0+0,接着i两次自加)
j = (i++) + (i++),j是不是等于0 (i没自加前把值赋给了j)
- 自增大总结:i=(i++)+(++i)另i=?
- 大话 i++、++i和i=++i、i=i++
- k=(++i)+(++i)+(++i)
- i = i++;i=++i
- i=i++; i=++i
- ++i *=i与 i++*= i
- 关于i++;++i;以及i=i++
- i++ ,++i,i=i++的问题
- i++ ,++i,i=i++的问题
- i++,++i,i=i+1 分析
- i = i++;
- a[i] = i++;
- I=I++
- i = i++;????
- 解释:i=i++
- i = &i
- i++ ++i区别 +=
- java i=i++
- 不同类型的浏览器调用不同的CSS(条件CSS与JS)
- None
- 在控制台程序中使用MFC类
- 一個挺適合初學者的Ant教程
- C#中得到程序当前工作目录和执行目录的五种方法
- 自增大总结:i=(i++)+(++i)另i=?
- VNC client
- Yahoo!网站性能最佳体验的34条黄金守则
- java编码转换的详细过程 (转)
- c#实现一般程序结构的搭建
- java classLoader 体系结构
- maven工程打包找不到hbm文件
- C++ Traits Design
- [DirectShow] 015 - Filter States