精华内容
下载资源
问答
  • C语言逻辑运算

    千次阅读 2020-02-22 15:43:16
    逻辑运算:&&(与)、||(或)、!(非) &&:连接两个表达式都成立时,则整个结果成立; 否则,只要有一个不成立,则整个结果就不成立。 ||:连接两个表达式只要有一个成立,则整个结果就是成立 ...

    逻辑运算:&&(与)、||(或)、!(非)
    &&:连接的两个表达式都成立时,则整个结果成立; 否则,只要有一个不成立,则整个结果就不成立。
    ||:连接的两个表达式只要有一个成立,则整个结果就是成立的
    !:其结果与!后面的值相反。如果后面的值为1,则该值取0;如果后面的值是0,则该值取1

    展开全文
  • c语言逻辑运算与位运算区别

    千次阅读 2013-12-09 09:28:08
    c语言中,逻辑运算与位运算很容易混淆,但是它们的功能是完全不同的。逻辑运算认为所有的非零的参数都为TRUE,参数0表示false,它们返回1或0. &&与||和&与|重要的区别是,如果第一个参数求值能确定表达式的结果,...

    c语言中,逻辑运算与位运算很容易混淆,但是它们的功能是完全不同的。逻辑运算认为所有的非零的参数都为TRUE,参数0表示false,它们返回1或0.

    &&与||和&与|重要的区别是,如果第一个参数求值能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。

    深入理解计算机系统第二章P36页,c语言中的逻辑运算答案

    #include<stdio.h>

    int main()
    {
     int a= 0x66;
    int b = 0x39;
    printf("%x,%x,%x,%x,%x,%x,%x,%x",a&b,a|b,~a|~b,a&!b,a&&b,a||b,!a||!b,a&&~b);
     return 0;

    }

    依次为ox20,ox7f,oxffffffdf,ox01,0x01,0x00,ox01



    逻辑运算包括左移和右移,其中右移又包括逻辑右移和算术右移

    逻辑右移与算术右移区别:逻辑右移在左端补k个0,算术右移在左端补k个最高有效位的值

    注意是单个移动,而不是作为整体,看下面的例子,每个[]进行移动,而不是[][]两个一起移动,对于无符号数据必须是逻辑的,对于有符号数默认是算术的

    x = [01100011][10010101]

    x>>4(逻辑右移)   [00000110][00001001]

              算术右移    [00000110][11111001] 



    展开全文
  • C语言逻辑运算的短路特性

    千次阅读 2015-03-14 16:54:49
    原理:(表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路” (表达式1)||(表达式2) 如果表达式1为真,则表达式...结果:x=1,y=0,z=0解释:由于第一个是“或”运算符,当++z为1时,它具
    原理:(表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”
    (表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”
    举例:
    1、x=y=z=0;
    c=++x||++y&&++z;
    printf("x=%d,y=%d,z=%d",x,y,z);
    结果:x=1,y=0,z=0
    解释:由于第一个是“或”运算符,当++z为1时,它具有短路特性,屏蔽掉后面的运算符。
    2、x=y=z=0;
    c=(++x||++y)&&++z;
    printf("x=%d,y=%d,z=%d",x,y,z);
    结果:x=1,y=0,z=1
    解释:由于在c的左边的逻辑表达式中的第一项含有“()”,所以(++x||++y)作为一个整体——作为一个数,所以先算括号里面的,然后由于“&&”的运算符的特性,再算++z,而对于括号里的再由于“||”的短路特性,只算了“++x”,由于它为“1”,所以“++y”就被屏蔽了。
    3、x=y=0
    c=x&&++y||++z;
    结果:c=1,x=0,y=0,z=1
    解释:注意逻辑运算符的运算顺序是自左向右,所以对于左边第一个“&&”运算符,首先算出它的逻辑值,再和后面的“||”运算,作为c的结果。根据优先级的顺序和“&&”的短路特性,由于开始x=0,则整个“&&”的逻辑表达式的逻辑值就是0,而且++y也被屏蔽掉了,再由于后面的“||”的特性,根据++z,可知c=1,z=1。
    4、x=y=z=0;
    c=x||++y&&z;
    结果:c=0,x=0,y=1,z=0
    解释:如果“||”前为“ 1”,则整个表达式即c=1;若“||”
    前为“0”时,那么根据“||”的特性,该表达式的值由后面的逻辑值确定。对于后面的逻辑表达式,根据“&&”的特性,由于++y=1而z=0,可知c=0,y=1。
    5、x=y=z=0;
    c=x||++y&&++z;
    结果:c=1,x=0,y=1,z=1
    解释:结合上一题可知,由于x=0,则该表达式的值由后面的表达式确定,根据“&&”的特性,由于“++y”的值为“ 1”,则继续再算“&&”后面的“++z”,由于“++z”的值也为“1”,所以c=1,y=1,z=1。
    6、x=y=z=0;
    c=x&&++y&&++z;
    结果:c=0,x=0,y=0,z=0
    解释:首先根据运算符的优先级,运算从左至右,对于第一个“&&”,由于x=0,则这个逻辑运算符的逻辑值为“0”,且屏蔽了后面的“++y”。再于逻辑运算符的逻辑值为“0”且后面为“&&”,根据它的短路特性后面的“++z”被屏蔽了。所以整个表达式的值即c=0,x=0,y=0,z=0。
    最后,总结一下关于类似c=++x&&++y||++z这类任何形式的逻辑表达试,均相当于c=(++x&&++y)||++z,但同时要结合其“&&”、和“||”不同的短路特性以及其内部的短路特性,可以正确地算出其逻辑值。
    展开全文
  • C语言逻辑运算短路

    千次阅读 2013-03-01 15:35:47
    1——或逻辑短路 #include int main() { int a=5,b=6,c=7,d=8,m=2,n=2;...输出的结果为1,2.为什么呢,因为a 2——与逻辑短路 #include int main() { int a=5,b=6,c=7,d=8,m=2,n=2; (m=a>b)
    1——或逻辑短路
    #include <stdio.h>
    int main()
    {
    int a=5,b=6,c=7,d=8,m=2,n=2;
    (m=a<b)||(n=c>d);
    printf("%d\t%d",m,n);
    }
    输出的结果为1,2.为什么呢,因为a<b,m=1,这个“或”逻辑就被“短路”掉了,后面的语句就没被执行,所以n还是等于原先的2

    2——与逻辑短路
    #include <stdio.h>
    int main()
    {
    int a=5,b=6,c=7,d=8,m=2,n=2;
    (m=a>b)&&(n=c>d);
    printf("%d\t%d",m,n);
    }
    输出的结果为0,2。因为a>b为0,m=0,整个“与”逻辑判断就为“假”,所以后面的“c>d”就被短路掉了,所以n还是等于原先的2
    又如:
    #include <stdio.h>
    int main()
    {
        int  a = -2,b = 0;
        while(a++ && ++b);
        printf("a = %d,b = %d\n",a,b);
    }
    结果为 a=1, b=2

    总结:“或”逻辑前面为1,“与”逻辑前面为0就会发生短路

    展开全文
  • C语言逻辑运算小程序

    2015-07-20 18:21:48
    /*1.5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。 E选手说:我第四,A第一。 比赛结束后,每位...
  • 按位与(&),按位或(|)和按位异或都是双目位操作符 它们首先把两个数字转换成二进制补码,然后把两个 ... 结果也是1,否则结果就是0  3 0000 0011 & 5 0000 0101  0000 0001 按位与可以把一
  • ​ 你学习了C语言的逻辑运算,觉得逻辑运算是一件非常好解决事情。但当成群结队逻辑运算符(这是一种夸张化情况,但的确也会有这种情况出现)向你涌来,眼花缭乱符号常常让人不知所措。 ​ 当然,大多数...
  • 第四章 逻辑运算和判断选取控制 41 关系运算符和关系表达式 关系运算是逻辑运算中比较简单的一种所谓关系运算实际上是比较运算将两个值进行比较判断比较的结果是否符合给定的条件例如a3是一个关系表达式大于号是一个...
  • 位级运算 一般将十六进制参数扩展成二进制表示然后进行位级运算再转换为...逻辑运算只有两种结果:非零参数表示为true,参数0表示为false,他们返回1或0。 逻辑运算符: &&:与 ||:或 !:取反 ...
  • C语言的逻辑运算(!0x00=0x01),为什么啊?求详细解释(!非,非零表示1/零表示零),结果不应该是0x00吗?在线等,挺急。。。
  • 4.1 关系运算和逻辑运算 4.2 if语句 第四章 选择结构程序设计 4.1.1 逻辑值及其在C语言中的表示 关系运算和逻辑运算的运算结果都是一个逻辑值逻辑值只有两个值即真和假在C语言中用数值1来表示真用数值0来表示假 因此...
  • 双目运算:(参与运算的有两个)加减乘除取余,除法运算要注意,如果参与运算的都为整数,那么结果也为整数,若参与运算的有实数,那么结果为实数!如:34/4=8。而取余运算要注意,参与运算必须为整数!如:14%3=2。...
  • 加+ 减- 乘* 除/ 取余%,其中取余显示是余数,注意除数不能为0,计算机运算与数学运算不同,如1<a<9在C中永远为真,因为先运算1<a结果只可能是1或0,符合条件为1,不符合为0,然后0或1与9比较,都是符合...
  • C语言运算

    2017-06-01 22:57:44
    1 两个取值,只有参与&运算的两个位都为 1 时,结果才为 1,否则为 0。例如1&1为 1,0&0为 0,1&0也为 0,这和逻辑运算符&&非常类似。   C语言中不能直接使用二进制,&两边的操作数可以
  • C语言编译系统在表示 逻辑运算 结果 时, 以数值 1 表示 “真” , 以数值 0 表示 “假”。 但在 判断 一个量是否为“真”时,以 0 代表 “假”,以非0代表“真”。 例程: #include void Print(int value)...
  • ios培训------我的c语言笔记,期待与您交流! #include <stdio.h> int main() { //逻辑与 条件1 &...其余情况的结果都为0,也就是“假”。因此,条件A或条件B只要有一个不成立,结果都为0,也就是 ...
  • 在高中数学中,我们学过逻辑运算,例如p为真命题,q就假命题,那么“p且q”为假,“p...逻辑运算的结果也只有“真”和“假”,“真”对应的值为 1,“假”对应的值为 0。 1) 与运算(&&) 参与运算的两个量都为真时,结
  •  C提供了一系列的逻辑运算||,&&,和!,分别对应于命题逻辑中OR,AND和NOT运算,但是它们功能是完全不同.逻辑运算认为所有非零参数都表示TRUE,而零参数表示FALSE.它们返回1或者0,分别表示结果为TRUE或者为FALSE....
  • 今天老师讲作业,碰到下图第八题,按照老师说法,++运算符优先级大于关系运算符和逻辑运算符,所以这题答案是a=4,b=6。但是我记得自己写过这个程序,结果并不是这样,然后又写了一次,如下图34。 依旧和老师讲...
  • 最近在看C语言的一本书《The C programming language(中文版)》,上面有几个关于逻辑运算的小问题比较有意思。你也可以去这个博客上看一下。 这个博客关《The C programming language(中文版)》这本书上习题的...
  • C语言中!代表的是非,~代表的是取反 !是逻辑运算符,真或假,1或0.逻辑取反,0或非0 ~一般是用于设置标志位,对于整形变量,对每一...2的结果是2,过程如下: 3&2 =0111&0010 =0010 =2 &&是逻辑...
  • 只有当第一个操作数的值无法确定逻辑运算的结果时,才会对第二个操作数进行求值,该种过程在逻辑与和逻辑或运算中得到很好的体现。 #include &lt;stdio.h&gt; int main() { int a=3,b=3; (a=0)&...
  • 一个比特(Bit)位只有 0 和 1 两个取值,只有参与&运算的两个位都为 1 时,结果才为 1,否则为 0。例如1&1为 1,0&0为 0,1&0也为 0,这和逻辑运算符&&非常类似。 C语言中不能直接使用二进制,&两边的操作数可以是...
  • C语言逻辑运算符中真假概念

    千次阅读 2015-07-28 10:10:14
    C语言逻辑运算符中 对于逻辑表达式的结果,0代表假,1代表真; 在逻辑表达式的运算过程中,0代表假,非0代表真; 例如: 3&&0 结果是 0 1&&0 结果是 0
  • C语言的各类运算概述

    2021-06-17 19:40:08
    C语言的各类运算概述 C语言的一个很有用的特性就是支持按位布尔运算。...如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。 移位运算:x<<k,x向左移动左位,丢弃..
  • 谭浩强老师《C程序设计》第四章第一题。学习辅导里没有答案,整理一下方便记忆。 1.算术运算就是指加减乘除和整数模运算(即取余数运算)。...3.逻辑运算指两个条件进行运算,有逻辑与、逻辑或、逻辑非三种。 ...
  • C语言笔录- 3 逻辑运算&&、 II、 ! 1.&& 1.1两边条件都为true时,结果才为true; 1.2如果有一个为false,结果就为false; 1.3当第一个条件为false时,就不再判断后面条件 注意:当数值参与逻辑与...
  • 1.算数运算 + - * / ...《取余结果的正负性跟%左边相关》 2.赋值运算符  // 赋值运算符  int a = 10; // 将10赋值给a;    //复合赋值运算符  a += 5 ; // a = a + 5;  a -= 5 ; // a =
  • 在单片机开发中,总有一些C语言基础知识是常常用到的而我们又不易掌握的,今天以STM32单片机为例,总结一下那些常用的C语言基础知识,例如逻辑...需要注意的是,逻辑运算的结果只有0和1,并不能有其他臆想的使用方...
  • C语言逻辑运算符

    千次阅读 2017-12-10 16:07:19
    逻辑运算符 用于判断数据的真假,结果为真或者假逻辑运算符!——非 &&——与 ||——或使用事项1、逻辑表达式中可以包含多个逻辑运算符 ...比如a+b如果,a+b>c,表达式的结果为假,右边表达式c==d,不会进行运算

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 424
精华内容 169
关键字:

c语言逻辑运算的结果

c语言 订阅