int x=2,y=3,z=4; 则表达式x+y&&(x=y)的值为_____? 5
这里是优先级应该是怎么样的?X+Y=5还是6?我认为是先x=y,再x+y,再&&,所以X+Y=6但是查到的答案里说的是,X+Y=5。有括号不应该先算括号里的吗?所以应该先...
这里是优先级应该是怎么样的?
X+Y=5还是6?
我认为是先x=y,再x+y,再&&, 所以X+Y=6
但是查到的答案里说的是,X+Y=5。
有括号不应该先算括号里的吗?所以应该先(x=y) ,x变为3了再计算(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,因为有符号&&,可知是判断命题的真假。
详细说明:
程序运行有规则的,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吗?如果不是的话,为什么呢?
追答
&&是逻辑运算符,表达式变成判断命题真假,只有true或false。
我知道你的想法:
(x=y),这样x的值从2变成3,你这样想对不对?
既然括号里面的x变成3,那括号外面的x也变成了3。然后你觉得这是应该的。
然后3+3=6。
而答案给的是括号里面的x变了,括号外面的x却没有变!其实这个答案也有问题,如果源代码你没有抄错的话。确实有2+3=5的源代码,不过不是这个。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询