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/07/06 12:58:26
![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](/uploads/image/z/9985843-19-3.jpg?t=a%E4%B8%BAint%E7%B1%BB%E5%9E%8B%2C%E4%B8%94%E5%85%B6%E5%80%BC%E4%B8%BA3%2Ca%2B%3Da-%3Da%2Aa+%E8%B7%91%E5%AE%8C%E7%AD%89%E4%BA%8E+-3+%E5%85%88%E8%BF%9B%E8%A1%8Ca-%3Da%2Aa++++a%3Da-a%2Aa++++++++++a%3D-6%E6%AD%A4%E6%97%B6a%3D-6a%2B%3Daa%3Da%2Ba%3D-12%E6%88%91%E7%9F%A5%E9%81%93%E5%BA%94%E8%AF%A5%E6%98%AF%E8%BF%99%E6%A0%B7%E7%AE%97%2C%E6%88%91%E4%BB%A5%E5%89%8D%E4%B9%9F%E6%98%AF%E8%BF%99%E4%B9%88%E8%AE%A4%E4%B8%BA%E7%9A%84%2C%E4%B8%8D%E8%BF%87%E6%88%91%E8%B7%91%E4%BA%86%E4%B9%8B%E5%90%8E%E7%BB%93%E6%9E%9C%E6%98%AF-3%E6%98%AF%E4%B8%8D%E6%98%AF%E7%AD%89%E4%BA%8E-3%2C%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E6%98%AF%E7%AD%89%E4%BA%8E-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
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语言的编译器一般优先关注表达式的值,而不是赋值语句.