有关与副作用与序列点的问题
有人可以给我解释下关于序列点吗?a+=a-=a*a;
a给初值12,在不同的编译器上是不是得到的答案不同,
在devc++上是-264;
我没有其他的编译环境,可以帮我试一下吗? 这种代码就没必要研究,实际写代码时也要尽量避开类似写法 wp231957 发表于 2022-5-17 20:32
这种代码就没必要研究,实际写代码时也要尽量避开类似写法
因为有笔试,所以不得不去看这个,{:5_104:} https://blog.51cto.com/u_9634496/5223759 {:7_146:} 666666666666666666666666 {:10_249:}{:10_249:}{:10_249:}顶一个! {:10_256:}{:10_256:}{:10_256:}{:10_256:}再试试运气,中 GCC 答案 -264 本帖最后由 wp231957 于 2022-5-18 10:06 编辑
这东西 GCC是这样计算的
#include <stdio.h>
int main()
{
int a=12;
a+=a-=a*a;
printf("%d\n",a);
return 0;
}
/*
这东西 GCC是这样计算的
mov dword ptr , 0Ch //取12
mov eax, 1
sub eax, //1减 =-11
mov edx,
imul eax, edx //12*-11=-132
mov , eax
mov eax,
add , eax //-132+-132=-264
*/ 学习学习 论茴字的四种写法{:5_109:} {:5_109:}
页:
[1]