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/08/06 14:03:45
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
xT[OA+RY_hv ThiMՂxD!Bl- gvfǧe[&ڤOsf;ߜpjYM3'xox6 R_EGϖqm>Yf}x&K/vhi; s݅TLF,HHv/_N`sdN/Ḫm0pfqnjV+Kkޞ$%˜Zx)o]` K/Birg‘IU>JDҩ_p78:uD}ȍn+ݰj'}W(V/_GCKOFվX&zʲ(bL2&MNbq %ٷ~q¨ql:>PN*<$NQIт((Hb&!M5-x q|c i ˢ )?KPrW\$:‡d]/#.r&R6Z"`\8tJ;EYZPc-#Z5 /4}ʸ _Kd7hd3 >Y- Ȯ U@@AO(cuf=tQN *2$g8ݭZM \D27 v.ho?,Uhh@;7Y]{A6W"Yo.wܫh w7R ׶

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语言的编译器一般优先关注表达式的值,而不是赋值语句.