作业帮 > 综合 > 作业

int x=2,y=3; 表达式 x+y---x+x++ - --y 值为 1

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/11 17:31:11
int x=2,y=3; 表达式 x+y---x+x++ - --y 值为 1
这个表达式的值是 2 写错了...囧,运算后x=3,y=1
不按照编译器,因为不同编译器的运算结合处理不同,结果也会不同,单纯按照理论计算的话如下:优先计算的是x或者y++和--的运算,也就便成为x+2-x+3- --y,接下来计算X和Y的加减运算,因为--y是在运算后在计算的运算符,接下来变为5- --y,变成--2,也就是值为1
再问: 多谢,式子的值是2,我写错了,要是2的话,是怎么算出来的,用的VC
再答: 额。。具体到编译器的话还真不好说,因为要看编译器的对运算的处理,这个我也没有很深入了解不同编译器的运算处理原理,但是运算原理不变,如果看答案的话那就是这么运算的我先把x,y的数字代入,2+3---2+2++---3,然后优先运算X++即为2+3---2+3---3,然后计算y--,就是2+2-2+3---3,这个时候x=3,y=2,把前面的计算完成就是5---3,然后先计算5-3,=2,在计算--y,也就是这个时候运算值为2,x=3.y=1
再问: 不对呀,x ,y-- 的值不是不变的嘛
再答: 好吧,我整理个逻辑给你,简单来说,不管是x++、y++、x--、y--都是优先运算,也就是先运算x=x+1,再把赋值好的变量代入常规运算,也就是说,假设现在是用你x的变量赋值,1+x++这则运算,首先先运算x++,也就是x赋值变为3,在运算1+x也就是1+3,我列出的其他也是同理,而++x,++y,--x,--y则是相反,他们先进入常规运算符运算,再进行变量自身的运算赋值,例如++x+1这则运算,首先运算x+1也就是2+1,在运算++x也就是x赋值变量为3