a为int类型,且其值为3,a+=a-=a*a 跑完等于 -3 先进行a-=a*a a=a-a*a a=-6此时a=-6a+=aa=a+a=-12我知道应该是这样算,我以前也是这么认为的,不过我跑了之后结果是-3是不是等于-3,为什么不是等于-12

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 01:30:20

a为int类型,且其值为3,a+=a-=a*a 跑完等于 -3 先进行a-=a*a a=a-a*a a=-6此时a=-6a+=aa=a+a=-12我知道应该是这样算,我以前也是这么认为的,不过我跑了之后结果是-3是不是等于-3,为什么不是等于-12
a为int类型,且其值为3,a+=a-=a*a 跑完等于 -3
 先进行a-=a*a    a=a-a*a          a=-6
此时a=-6
a+=a
a=a+a=-12

我知道应该是这样算,我以前也是这么认为的,不过我跑了之后结果是-3

是不是等于-3,为什么不是等于-12啊.

a为int类型,且其值为3,a+=a-=a*a 跑完等于 -3 先进行a-=a*a a=a-a*a a=-6此时a=-6a+=aa=a+a=-12我知道应该是这样算,我以前也是这么认为的,不过我跑了之后结果是-3是不是等于-3,为什么不是等于-12
你说的只是你的理解,而不是C语言.
C语言的赋值语句并没有说明发生效果的时机.
你认为执行完a-=a*a之后,a的值就应该是-6了,但是这是你的理解.
因为a=3,所以可以在一开始就把算式改写成:
a=3-(3*3)
a=3+(3-3*3);
显然无论哪种方式,a都可以获得确定的值.
实际上你只要记住,赋值语句的级别很低,C语言的编译器一般优先关注表达式的值,而不是赋值语句.