C语言的计算题。
请写出步骤。好像结果是0?**x=2,y=-3,z=3,则表达式x||y+z&&y-z的值为()。...
请写出步骤。好像结果是0?
* *x=2,y=-3,z=3,则表达式x||y+z&&y-z的值为( )。 展开
* *x=2,y=-3,z=3,则表达式x||y+z&&y-z的值为( )。 展开
8个回答
展开全部
你是在什么编译器下运行出0的结果的,应该是1才对啊。逻辑与运算符的优先级高于逻辑或,先进行逻辑与运算。由于算数运算符的优先级高于逻辑运算符,因此逻辑与运算符的两个操作数分别是y+z和y-z,整个表达式变为2 || 0 && y - z,注意这里y - z不会进行计算(因为逻辑与运算有短路的效果,你可以把y-z改为y++试试,看看y的值是否改变)。逻辑与运算的结果是0。再进行逻辑或运算,x不为0,所以结果为1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果是1 先看运算符的优先级 + 和-的优先级比||和&&高 所以先算y+z结果为0,再算y-z为-6
&&的优先级比||高 而y+z==0 所以逻辑与表达式的值为0。 而x=2;所以逻辑或表达式为1
&&的优先级比||高 而y+z==0 所以逻辑与表达式的值为0。 而x=2;所以逻辑或表达式为1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这道题的运算符有:算术运算符、逻辑运算符其优先级别如下:
最高:算术运算符:+ - (+ - 优先级相同 先算)
次之:逻辑运算符:|| &&( || && 优先级相同 后算)
所以为:x || (y+z)&&(y-z)
最高:算术运算符:+ - (+ - 优先级相同 先算)
次之:逻辑运算符:|| &&( || && 优先级相同 后算)
所以为:x || (y+z)&&(y-z)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里主要是运算符优先级的问题。
逻辑运算符< (+-)运算符。
同时 || < &&
所以
x||y+z&&y-z = 2||0&&-6 =2||0=1
逻辑运算符结果只有0或1 。
a&&b 当a,b至少有一个为0时, =0 ,否则为1
a||b 当a,b全为0时, =0.否则为1.
逻辑运算符< (+-)运算符。
同时 || < &&
所以
x||y+z&&y-z = 2||0&&-6 =2||0=1
逻辑运算符结果只有0或1 。
a&&b 当a,b至少有一个为0时, =0 ,否则为1
a||b 当a,b全为0时, =0.否则为1.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
解:
因为x=2,y=-3,z=3
所以x||y=1;
z&&y=1
所以答案为-1
因为x=2,y=-3,z=3
所以x||y=1;
z&&y=1
所以答案为-1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询