几个关于逻辑运算的C语言题目
.a.b.c.d.m.n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后n的值为?答案:22.设x、...
.a.b.c.d.m.n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后n的值为?
答案:2
2.设x、y、z均为int型变量,则执行语句:x=y=3;t=++x||++y;后y的值为?
答案:3
3.#include<stdio.h>
main()
{int a=0,b=0,c=0;
if(++a>0||++b>0)
++c;
printf("\na=%d,b=%d,c=%d"a,b,c);}
答案:a=1,b=0,c=1
求答案的解答说明啊!!!!
呃……都是书上给出的答案啊,有错吗????
求答案的解释说明啊!!!!!! 展开
答案:2
2.设x、y、z均为int型变量,则执行语句:x=y=3;t=++x||++y;后y的值为?
答案:3
3.#include<stdio.h>
main()
{int a=0,b=0,c=0;
if(++a>0||++b>0)
++c;
printf("\na=%d,b=%d,c=%d"a,b,c);}
答案:a=1,b=0,c=1
求答案的解答说明啊!!!!
呃……都是书上给出的答案啊,有错吗????
求答案的解释说明啊!!!!!! 展开
8个回答
展开全部
包括:1。&&逻辑与
2。||逻辑或
3。!逻辑非
逻辑运算符用于对包含关系运算符的表达式进行合并或取非
对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算符的解释
请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将==写成=
=是错误的。
假设一个程序在同时满足条件a<10和b==7时,必须执行某些操作。应使用关系运算符和逻辑运算符“与”来写这个
条件的代码。用&&表示“与”运算符,该条件代码如下:
(a<10)
&&
(b==7);
类似地,“或”是用于检查两个条件中是否有一个为真的运算符。它由两个连续的管道符号(||)表示。如果上例
改为:如果任一语句为真,则程序需执行某些操作,则条件代码如下:
(a<10)
||
(b==7);
第三个逻辑运算符“非”用一个感叹号(!)表示。这个运算符对表达式的真值取反。例如,如果变量s小于10,程序
程序需执行某些操作,则条件代码如下:
(s<10)
或
(!(s>=10))
//s不大于等于10
关系运算符和逻辑运算符的优先级一般都低于算术运算符。例如,5>4+3的计算与5>(4+3)运算符是一样的,即
先计算4+3,再执行关系运算。此表达示的结果为“假”,即,将返回0。
下面的语句
printf("%d",5>4+3);
将输出
0
可以总结为:&&的结果是真真为真。||的结果是假假为假。
2。||逻辑或
3。!逻辑非
逻辑运算符用于对包含关系运算符的表达式进行合并或取非
对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算符的解释
请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将==写成=
=是错误的。
假设一个程序在同时满足条件a<10和b==7时,必须执行某些操作。应使用关系运算符和逻辑运算符“与”来写这个
条件的代码。用&&表示“与”运算符,该条件代码如下:
(a<10)
&&
(b==7);
类似地,“或”是用于检查两个条件中是否有一个为真的运算符。它由两个连续的管道符号(||)表示。如果上例
改为:如果任一语句为真,则程序需执行某些操作,则条件代码如下:
(a<10)
||
(b==7);
第三个逻辑运算符“非”用一个感叹号(!)表示。这个运算符对表达式的真值取反。例如,如果变量s小于10,程序
程序需执行某些操作,则条件代码如下:
(s<10)
或
(!(s>=10))
//s不大于等于10
关系运算符和逻辑运算符的优先级一般都低于算术运算符。例如,5>4+3的计算与5>(4+3)运算符是一样的,即
先计算4+3,再执行关系运算。此表达示的结果为“假”,即,将返回0。
下面的语句
printf("%d",5>4+3);
将输出
0
可以总结为:&&的结果是真真为真。||的结果是假假为假。
展开全部
哦,这个我知道,书上和老师都会提到这个问题的,在逻辑运算中会出现“短路”的现象,例如“&&”并列语句当中如果第一个为假的话就结果直接为零,不执行后面的运算;“||”或语句中如果第一为真结果直接为1,不执行后面的语句。这样你就明白为什么第一道题中的n不是0而是原来的值2,第二道题仲的y是3而不是4,第三道题仲的b是0而不是1啦
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
5>6是假,所以&&的结果肯定是假,右边的n=c>d就没有运算了,所以n仍为2
同理++x=4,为真,所以||结果肯定是真,右边的++y没有运算
还是同理,++a=1>0为真,所以++b没有运算,++c算了
同理++x=4,为真,所以||结果肯定是真,右边的++y没有运算
还是同理,++a=1>0为真,所以++b没有运算,++c算了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该没错,典型的短路求值。
分析一个吧:
(m=a>b)&&(n=c>d)
a > b false
m = a >b m = 0
(m = a>b) 整个表达式结果也是0
因为左边表达式结果为假,根据短路求值规则,右边不用求解,所以n不变
结果是: 2
分析一个吧:
(m=a>b)&&(n=c>d)
a > b false
m = a >b m = 0
(m = a>b) 整个表达式结果也是0
因为左边表达式结果为假,根据短路求值规则,右边不用求解,所以n不变
结果是: 2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(m=a>b)&&(n=c>d) 结果该是0 因a不大于b m=就为假 后面的C++就不运算了
第二个是对的
++a 所以A=1
后面++b不执行
然后++c;
第二个是对的
++a 所以A=1
后面++b不执行
然后++c;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询