这是我编译的代码的运算阶段汇编指令:
运算阶段代码分析
movl $3, -8(%rbp) ; a=3;
addl $1, -8(%rbp) ; a++;
movl -8(%rbp), %eax ; eax=a;
addl %eax, %eax ; eax+=eax
addl -8(%rbp), %eax ; eax+=a;
movl %eax, -4(%rbp) ; b=eax
addl $1, -8(%rbp) ; a++;
addl $1, -8(%rbp) ; a++;
可见是先算中间那个,然后再互相加起来,最后才执行第一个和第三个[s:275]
这个东西括号里是“同步”计算的
相当于:
int a,b;
a=3;
++a;
b=a+a+a;
a++;
a++;