‍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)
展开
 我来答
lugoodboy
2022-10-22 · TA获得超过7.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:86%
帮助的人:6327万
展开全部

表达式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的源代码,不过不是这个。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式