首页教程使用技巧正文

逻辑题c语言,几个关于逻辑运算的C语言题目

发布时间:2024-04-20 00:35:49 来源:其它 作者:未知

1,几个关于逻辑运算的C语言题目

1,几个关于逻辑运算的C语言题目

哦,这个我知道,书上和老师都会提到这个问题的,在逻辑运算中会出现短路的现象,例如amp;amp;并列语句当中如果第一个为假的话就结果直接为零,不执行后面的运算;||或语句中如果第一为真结果直接为1,不执行后面的语句这样你就明白为什么第一道题中的n不是0而是原来的值2,第二道题仲的y是3而不是4,第三道题仲的b是0而不是1啦

(magt;b)amp;amp;(ncgt;d)结果该是0因a不大于bm就为假后面的C++就不运算了

第二个是对的

++a所以A1

后面++b不执行

然后++c;

应该没错,典型的短路求值

分析一个吧:

(magt;b)amp;amp;(ncgt;d)

agt;bfalse

magt;bm0

(magt;b)整个表达式结果也是0

因为左边表达式结果为假,根据短路求值规则,右边不用求解,所以n不变

结果是:2

5gt;6是假,所以amp;amp;的结果肯定是假,右边的ncgt;d就没有运算了,所以n仍为2

同理++x4,为真,所以||结果肯定是真,右边的++y没有运算

还是同理,++a1gt;0为真,所以++b没有运算,++c算了

包括:1amp;amp;逻辑与2||逻辑或3!逻辑非

逻辑运算符用于对包含关系运算符的表达式进行合并或取非

对于使用逻辑运算符的表达式,返回0表示假,返回1表示真关于逻辑运算符的解释

请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将写成是错误的

假设一个程序在同时满足条件alt;10和b7时,必须执行某些操作应使用关系运算符和逻辑运算符与来写这个

条件的代码用amp;amp;表示与运算符,该条件代码如下:

(alt;10)amp;amp;(b7);

类似地,或是用于检查两个条件中是否有一个为真的运算符它由两个连续的管道符号(||)表示如果上例

改为:如果任一语句为真,则程序需执行某些操作,则条件代码如下:

(alt;10)||(b7);

第三个逻辑运算符非用一个感叹号(!)表示这个运算符对表达式的真值取反例如,如果变量s小于10,程序

程序需执行某些操作,则条件代码如下:

(slt;10)

(!(sgt;10))//s不大于等于10

关系运算符和逻辑运算符的优先级一般都低于算术运算符例如,5gt;4+3的计算与5gt;(4+3)运算符是一样的,即

先计算4+3,再执行关系运算此表达示的结果为假,即,将返回0

下面的语句

printf(%d,5gt;4+3);

将输出0

可以总结为:amp;amp;的结果是真真为真||的结果是假假为假

(magt;b)结果为0

(ncgt;d)结果为1

(magt;b)amp;amp;(ncgt;d)结果为1

n2

2,C语言逻辑运算题目

2,C语言逻辑运算题目

在c语言中amp;amp;这个运算符的优先级要高于||,所以先算yamp;amp;z0之后算x||01,所以输出的是1

c语言中的逻辑运算符就三种,amp;amp;与||或!非,它们的优先极顺序为非,与,或它们含义如下,!:当操做数为真时,结果为假,反之也成立,并且它的优先极也最高,因为只有它是单目运算符,amp;amp;:只有当两个操做数都为真时,结果才为真,否则为假||:只有当两个操做数都为假时,结果才为假,否则结果为真除了这些,逻辑运算符还有几点应注意,!运算符是右结合性,amp;amp;和||是左结合性在逻辑表达式求解时,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求表达式的解时,才能执行该运算符如补充:aamp;amp;bamp;amp;c只有a为真(非0),才判别b的值,只有a和b都为真情况下才判断c的值,只要a为假,就不用判断b和c的值了a||b||c只要a为真就不必判断b和c,只有a为假,才判断b,a和b都为假才判断c

是否可以解决您的问题?

x||yamp;amp;z先算这个yamp;amp;z为0那么1||0结果为1

最后x1所以是1

3,一题逻辑运算的C语言题目...跪求

3,一题逻辑运算的C语言题目...跪求

main()

{intx,y,z;

xyz0;

++x||++yamp;amp;++z;

//因为amp;amp;的运算级高于||而且运算顺序都是从左到右,所以当执行||前面的++x内容非零以后,后面的两项不管是什么值都不影响结果,所以后面的程序就不编译了

//这句话等同于++x的效果,得到X1y0z0

printf(x%d\ty%d\tz%d\n,x,y,z);

xyz0;

++xamp;amp;++y||++z;

//因为amp;amp;的运算级高于||运算顺序都是从左到右,所以先计算++x和++y,当这两项运算结果非零,不管||后面值是什么都不影响结果,所以后面的++z就不编译了

//这句话等同于++xamp;amp;++y的效果,得到X1y1z0

printf(x%d\ty%d\tz%d\n,x,y,z);

xyz0;

++xamp;amp;++yamp;amp;++z;

//amp;amp;的运算顺序是左到右,而且不存在前面的执行以后后面的值不管是否执行都不影响语句结果的情况,所以++x++y++z都运算

//得到X1y1z1

printf(x%d\ty%d\tz%d\n,x,y,z);

xyz-1;

++xamp;amp;++yamp;amp;++z;

//amp;amp;的运算顺序是从左到右,当先执行了++x以后,表达式的值不管y和z是什么值结果都是0,所以后面的部分不编译运算

//等同于++x,得到X0y-1z-1

printf(x%d\ty%d\tz%d\n,x,y,z);

xyz-1;

++x||++yamp;amp;++z;

//amp;amp;的优先级高于||,所以先执行++y,当执行了++y以后z的值就不影响++yamp;amp;++z的结果了,就不执行++z了,

//等同于++x||++y得到X0y0z-1

printf(x%d\ty%d\tz%d\n,x,y,z);

xyz-1;

++xamp;amp;++y||++z;

//同理等同于++x||++z得到X0y-1z0

printf(x%d\ty%d\tz%d\n,x,y,z);

}

哦,这个我知道,书上和老师都会提到这个问题的,在逻辑运算中会出现短路的现象,例如amp;amp;并列语句当中如果第一个为假的话就结果直接为零,不执行后面的运算;||或语句中如果第一为真结果直接为1,不执行后面的语句这样你就明白为什么第一道题中的n不是0而是原来的值2,第二道题仲的y是3而不是4,第三道题仲的b是0而不是1啦

这个简单,你知道C语言是有上向下一次运行的是把,你的程序可是简单的分析成以下的形式

main()

{intx,y,z;//定义变量x,y,z;

xyz0;//你给x,y,z赋了个初始值0;

++x||++yamp;amp;++z;//这是你的逻辑表达式其中++x等同于xx+1(赋值运算)之后的++y和++z同理,||和amp;amp;是逻辑运算符,这个语句就牵扯到了逻辑运算符的优先级:amp;amp;的优先级大于||而他们俩的优先级又大于赋值运算符的!

printf(x%d\ty%d\tz%d\n,x,y,z);//打印出来x,y,z的结果

优先级就是决定电脑先去执行那一部分,越高越先执行!之后你的语句就是这个上面这个形式的重复了希望我的解答能让你了解到逻辑表达式在系统是怎么执行的有什么不懂的再问哈!

文章TAG: c语言 逻辑 语言 逻辑运算 题目 逻辑题c语言

还没有评论,快来抢沙发吧!

最新发现

相关资讯

新闻热榜

热门游戏

精彩专题