在C语言中,表达式5>3&&2||8<4-!0的值为()。

这道题怎么做 是判断他的逻辑为真假吗?答案只能在 1和0里?

1)正常思路:由于逻辑运算符优先级别低于比较运算符同时这两种都低于算术运算符,因此先考虑后半部分,4-!0 真值为1, 而8<1的真值为0.再考虑或左边的表达式,5>3&&2显然真值为1最终结果为 1||0 当然结果为12) 有 || 将表达式分成两部分 左边的是 5>3&&2 显然其真值为1 因此 1 || 任意 真值都为1 不用算后面的了。真值为1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-02
你这个看运算符的优先级以及短路运算。结果是 1

> 的优先级 高于 && , &&高于 ||

优先级 运算符 名称或含义 使用形式 结合方向 说明
1 [] 数组下标 数组名[常量表达式] 左到右
() 圆括号 (表达式)/函数名(形参表)
. 成员选择(对象) 对象.成员名
-> 成员选择(指针) 对象指针->成员名
2 - 负号运算符 -表达式 右到左 单目运算符
(类型) 强制类型转换 (数据类型)表达式
++ 自增运算符 ++变量名/变量名++ 单目运算符
-- 自减运算符 --变量名/变量名-- 单目运算符
* 取值运算符 *指针变量 单目运算符
& 取地址运算符 &变量名 单目运算符
! 逻辑非运算符 !表达式 单目运算符
~ 按位取反运算符 ~表达式 单目运算符
sizeof 长度运算符 sizeof(表达式)
3 / 除 表达式/表达式 左到右 双目运算符
* 乘 表达式*表达式 双目运算符
% 余数(取模) 整型表达式/整型表达式 双目运算符
4 + 加 表达式+表达式 左到右 双目运算符
- 减 表达式-表达式 双目运算符
5 << 左移 变量<<表达式 左到右 双目运算符
>> 右移 变量>>表达式 双目运算符
6 > 大于 表达式>表达式 左到右 双目运算符
>= 大于等于 表达式>=表达式 双目运算符
< 小于 表达式<表达式 双目运算符
<= 小于等于 表达式<=表达式 双目运算符
7 == 等于 表达式==表达式 左到右 双目运算符
!= 不等于 表达式!= 表达式 双目运算符
8 & 按位与 表达式&表达式 左到右 双目运算符
9 ^ 按位异或 表达式^表达式 左到右 双目运算符
10 | 按位或 表达式|表达式 左到右 双目运算符
11 && 逻辑与 表达式&&表达式 左到右 双目运算符
12 || 逻辑或 表达式||表达式 左到右 双目运算符
13 ?: 条件运算符 表达式1? 表达式2: 表达式3 右到左 三目运算符
14 = 赋值运算符 变量=表达式 右到左
/= 除后赋值 变量/=表达式
*= 乘后赋值 变量*=表达式
%= 取模后赋值 变量%=表达式
+= 加后赋值 变量+=表达式
-= 减后赋值 变量-=表达式
<<= 左移后赋值 变量<<=表达式
>>= 右移后赋值 变量>>=表达式
&= 按位与后赋值 变量&=表达式
^= 按位异或后赋值 变量^=表达式
|= 按位或后赋值 变量|=表达式
15 , 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算
第2个回答  2018-04-13

正常思路:由于逻辑运算符优先级别低于比较运算符同时这两种都低于算术运算符,因此先考虑后半部分,4-!0真值为1,而8&lt;1的真值为0.再考虑或左边的表达式,5&gt;3&&2显然真值为1最终结果为1||0当然结果为12)有||将表达式分成两部分左边的是5&gt;3&&2显然其真值为1因此1||任意真值都为1不用算后面的了。真值为1

本回答被网友采纳
第3个回答  2021-06-28
表达式自左至右扫描求解。首先处理“5>3”(因为关系运算符优先于逻辑运算符&&)。在关系运算符>两侧的5和3作为数值参加关系运算,“5>3”的值为1(代表真)。再进行“1&&8<4!0”的运算,8的左侧为&&,右侧为“<”运算符,根据优先规则,应该先进行“<”运算,即“8<4-!0”的运算。现在4的左侧为“<”,右侧为“-”运算符,得到结果为1。然后进行“4-1”的运算,得到结果为3,再进行“8<3”的运算,得0,最后进行“1&&0”的运算,结果为0。
第4个回答  2013-04-02
首先要看看 运算符优先级;看看就行了,别打算一下子全记住,那玩意实在难记,要在以后的应用和做题中记忆。
其次,有一个常考点:|| 和 && 的短路现象。
1.A||B,若A为1,则不再计算B;返回1
2.A&&B ,若A为0,则不再计算B;返回0本回答被网友采纳