‍int x=2,y=3,z=4; 则表达式x+y&&(x=y)的值为_____?

这里是优先级应该是怎么样的?
X+Y=5还是6?
我认为是先x=y,再x+y,再&&, 所以X+Y=6
但是查到的答案里说的是,X+Y=5。
有括号不应该先算括号里的吗?所以应该先(x=y) ,x变为3了再计算(x+y)

表达式x+y&&(x=y)的值为1,因为有符号&&,可知是判断命题的真假。



详细说明:

x的值与表达式的值

程序运行有规则的,CPU有它自己的处理方式,程序的x+y&&(x=y),并不是像数学中的那样加上一个数,x会变大。也不是按照数学计算的方式处理

然后后面的x=y是赋值语句,而不是判断相等x==y

计算机x+y&&(x=y)是求C语言中这个命题的真假,所有不为零的值都是真值,打印1。

C语言规定,1为真(TRUE), 0为假(FALSE)。

如果z=x+y&&(x=y);那么z的值也是1。

追问

x+y&&(x=y),请问对于&&两边的运算次序应该是怎么样的?是先赋值后x=3了再计算x+y=6吗?如果不是的话,为什么呢?

追答

&&是逻辑运算符,表达式变成判断命题真假,只有truefalse

我知道你的想法:

(x=y),这样x的值从2变成3,你这样想对不对?

既然括号里面的x变成3,那括号外面的x也变成了3。然后你觉得这是应该的。

然后3+3=6。

答案给的是括号里面的x变了,括号外面的x却没有变!其实这个答案也有问题,如果源代码你没有抄错的话。确实有2+3=5的源代码,不过不是这个。

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜