为什么j不是13而且14?
j=(3+3)+(6+6)-3-3
j=14
这个表达式的计算结果是未定义的,编译时加上-Wall参数会输出 warning: operation on 'i' may be undefined [-Wsequence-point]
我这输出的也是14,看汇编代码还是清楚的
call ___main //调用mian函数
movl $3, 28(%esp) //把3放到esp寄存器
addl $1, 28(%esp) //给esp寄存器加1
addl $1, 28(%esp) //给esp寄存器加1,现在esp里是5了
movl 28(%esp), %eax //把esp的值放到eax
leal (%eax,%eax), %edx //把eax和eax里的值相加,放到edx,现在edx是10
subl $1, 28(%esp) //esp里的值减1
movl 28(%esp), %eax
addl %edx, %eax
movl %eax, 24(%esp)
movl 24(%esp), %eax
movl %eax, 8(%esp)
movl 28(%esp), %eax
movl %eax, 4(%esp)
movl $LC0, (%esp)
call _printf