C语言问题:a=3,b=4,c=5,则逻辑表达式“!(a+b)*c-1&&b+c%2
展开全部
&&是逻辑和,!是逻辑非
!(3+4)*5 - 1 && 4+ 5%2
先算括号里的
!7*5-1 && 4+5%2
!逻辑非运算符的优先级比-运算符高
7转换成bool值是true,运作逻辑非就翻转成false(0)
0*5-1 && 4+5%2
0-1 = -1
true && 4+5%2
%优先级在+前面
5%2 = 1
4+1 = 5
true&&true
&&运算符要两边对象都是true时才会为true
!(3+4)*5 - 1 && 4+ 5%2
先算括号里的
!7*5-1 && 4+5%2
!逻辑非运算符的优先级比-运算符高
7转换成bool值是true,运作逻辑非就翻转成false(0)
0*5-1 && 4+5%2
0-1 = -1
true && 4+5%2
%优先级在+前面
5%2 = 1
4+1 = 5
true&&true
&&运算符要两边对象都是true时才会为true
追问
!7用中文怎么说?
为啥!7会等于0?
追答
任何值不为0的对象只要他可以转换成bool值就会被转换为true
这里7转换成bool值肯定就是true了。
!(逻辑非运算符)是反转得到的结果
如果你得到的是true(真)使用逻辑非就会反转成false(假)
比如
scanf("%d",i); //假设有一个int类型的对象i
if(i) //如果i不为0(false,只有0会转换成false)
//xxxxx
//上面那句话也就说明了只有0(false)才会被逻辑非转换成true
if(!i) //如果i为0
//xxx
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询