若int x=2,y=3,z=5;则表达式x>y!=z>y的结果为1。请利用运算符的优先级分析原因。

作者&投稿:芒环 (若有异议请与网页底部的电邮联系)
C语言:已有定义int x=3,y=4,z=5;则表达式 !(x+y)+z-1&&y+z/2的值是?~

答案是1。
涉及到的运算符: ! () + - && /
运算符优先级为:() ! / + - &&
运算过程:
x=3,y=4,z=5
!(x+y)+z-1&&y+z/2
!(3+4)+5-1&&4+5/2
所以表达式计算步骤为
!(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2
!7为 0
-> 0+5-1&&4+5/2
5/2 整数除整数得整数 2
-> 0+5-1&&4+2
-> 4&&6
逻辑运算 &&

扩展资料
C语言运算符的优先级:

如果同一优先级的运算符,结合次序由结合方向所决定。
参考资料来源:百度百科-运算符优先级

1>2?1:(32?1:4这样就一目了然了1>2为假 结果就是4

根据运算符优先级/结合性,原式等效于

(x>y)!=(z>y)

代入即

(2>3)!=(5>3)

0!=1

表达式结果为1

C的运算符有以下几类:

1.算术运算符:* - + / %

2.关系运算符: > < == != >= <=

3.逻辑运算符:! && ||

4.位运算符:<< >> ~ | ^ &

5.赋值运算符:=及扩展赋值运算符

6.条件运算符:?:

7.逗号运算符:,

8.指针运算符:*和&

9.求字节数运算符:sizeof

10.强制类型转换运算符:(类型)

11.分量运算符:. ->



根据运算符优先级/结合性,原式等效于
(x>y)!=(z>y)
代入即
(2>3)!=(5>3)
0!=1
表达式结果为1


慈溪市15097265158: int x=2,y=3,z=4;则表达式x||y+z的值为1.||的意思是什么 -
虞聪血液: 逻辑运算符 逻辑或 非0即为真 即运算结果只能是1(真)或者0(假) 在参与运算的两个数据中只要有一个不为0,即结果就是1

慈溪市15097265158: int x=2,y=3,z;z=(++x>=y -- )?((--y==1)?x--:--y):y--; -
虞聪血液: int x=2,y=3,z;在这里我要说明下 ?:三目运算符的做用bai,比如z=a>b?c:d.这里表示如果a大于b那么z就等du于c否则就等于d.再看楼主的表达式 z = (++x>=y--) ? ((--y==1)?x--:--y) :y--;,首先我们来计算(++x>=y--),++x=3,这没什么好说的...

慈溪市15097265158: 以下程序运行结果是() #include<stdio> int main() { int x=2,y=3,z; z=x>y? -- x:--y; prin -
虞聪血液: z=x>y?--x:--y; 这个是?:语句. 右侧的x>y?--x:--y会赋值给z. 先判断x>y 即2>3不成立. 执行:后面的. 前面的--x不会执行,所以x值不变,还是2. 后面的--y,先自减,y=2. 然后把结果赋值给z. z也是2 输出x y z为2,2,2

慈溪市15097265158: 设有int x=2,y=3,z;,执行语句z=x<y||y -- ;后y的值是------. -
虞聪血液: y的值是3,因为那个或条件前面成立了,后面的减1就不做了.

慈溪市15097265158: int x=2,y=3,z=4; 则表达式x+y&&(x=y)的值为 - ----. 【参考答案】 1 为什么? -
虞聪血液: 表达式x+y&&(x=y)等价于(x+y)&& (x=y),x+y=5,x=y是将y赋给x,故x=3. 5 && 3 = 1 注意两点:1、运算优先级 2、x=y 与 x==y的区别,前者为赋值表达式,后者为逻辑表达式

慈溪市15097265158: int x=2,y=3,z=4; 则表达式x+(y>!z)的值为【1】. -
虞聪血液: 事情是这样的.z 不为 0,所以!z为布尔值false,转化成int就是0 y > 0,显然为布尔值true,转化成int就是1 x + 1 就是3.注意中间有一系列隐式类型转换

慈溪市15097265158: c 语言 int x=2,y=3,z=4;则表达式x||y+z的值为? -
虞聪血液: 这个应该是考试题,应该不会上机调试,最好的方法,应该是掌握住方法.而不是上机.x=2.为真,(在c++中非0 即为真,这个相当重要) y+z=7 为真.因为||是逻辑或 两个同时为真.故 值为真.不知道你不否明白,如果不明白.可以加我好友.继续探讨

慈溪市15097265158: 定义:int x=3,y=4,z=5;则表达式!(x+y)+z - 1&&y+z/2的值是 -
虞聪血液: 这里涉及到的运算符: ! () + - && / 优先级:() ! / + - &&x=3,y=4,z=5 !(x+y)+z-1&&y+z/2!(3+4)+5-1&&4+5/2所以表达式计算步骤为 !(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2!7为 0 -> 0+5-1&&4+5/2 5/2 整数除整数得整数 2 -> 0+5-1&&4+2 -> 4&&6 逻辑运算 &&所以是1C++ 运算符优先级列表 (很详细的): http://www.cppblog.com/aqazero/archive/2006/06/08/8284.html

慈溪市15097265158: 若有下面的语句:int x=2,y=3,z=4,m;则在表达式m=(x<z - 4)后,m的值为? -
虞聪血液: 按照优先级的顺序,首先是计算Z-4,等于=0,然后是判断X 给你一个优先级的表,这是顺序是从上到下,最上面的是先执行!运算符 描述 结合性() 圆括号 自左向右!, ++, --, sizeof 逻辑非,递增, 递减,求数据类型的大小 自右向左*, /, % 乘法,除法,取余 自左向右+, - 加法,减法 自左向右, >= 小于,小于等于,大于,大于等于 自左向右= =, != 等于,不等于 自左向右&& 逻辑与 自左向右 || 逻辑或 自左向右=,+=, *=, /=, %= ,-= 赋值运算符,复合赋值运算符 自右向左

慈溪市15097265158: C语言.int x=3 y=4 z=5;求!(x<y)&&!z||1的值.说清楚过程,谢谢. -
虞聪血液: 逻辑运算符有三种,分别为&&(与运算)||(或运算)!(非运算),三者的优先级顺序为!>&&>||.PS. 1、与运算符(&&)和或运算符(||)均为双目运算符.具有左结合性.非运算符(!)为单目运算符,具有右结合性.2、“&&”和“||”优先级低于关系运算符,“!”优先级高于算术运算符.(x!(x!z=0!(x0||1=1 所以结果是1

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网