-
2019-11-10 21:23:27
谭浩强老师《C程序设计》第四章第一题。学习辅导里没有答案,整理一下方便记忆。
1.算术运算就是指加减乘除和整数的模运算(即取余数运算)。
2.关系运算就是比较运算,将两个数值进行比较,判断其比较结果是否符合给定的条件。
3.逻辑运算指两个条件进行运算,有逻辑与、逻辑或、逻辑非三种。
更多相关内容 -
C语言关系运算和逻辑运算
2021-12-21 16:41:25每个关系运算符对它左侧值和右侧值进行比较大小的运算 2.关系表达式 用关系运算符连接起来的式子。 若关系为真,关系表达式的值为1; 若关系为假,关系表达式的值为0; 3.优先级 关系运算符优先级低于算术...一、关系运算
1.关系运算符
每个关系运算符对它左侧值和右侧值进行比较大小的运算
2.关系表达式
用关系运算符连接起来的式子。
若关系为真,关系表达式的值为1;
若关系为假,关系表达式的值为0;
3.优先级
关系运算符优先级低于算术运算符,高于赋值运算符。例如x>(y+3)与x>y+3相同。
[例]:
执行a=-2; b=3; x=a+b>2; 后,x=?
4.结合性
从左到右
[例]:设 a=3, b=2, c=1,求下列表达式的值?
c>b (a-b)==1 (b+c)<a a=5>3>4
二、逻辑运算
1.逻辑运算符
逻辑运算符的运算对象通常是关系表达式。
C语言提供三种逻辑运算符:
&& 逻辑与 两边运算量都为非0时,结果为真
|| 逻辑或 两边运算量都为0时,结果为假,否则为真
! 逻辑非 使操作数的值0变1,1变0
说明:
&& 和||是‚双目运算符,要求有两个操作数,左侧一个,右侧一个。
! 是单目运算符,只要求有一个操作数。
2.逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来的式子。
a&&b a、b均为真, 则a&&b为1(真)
a||b a、b之一为真,则a||b为1(真)
!a 若a为真,则!a为假
3.优先级
!运算符优先级高于算术运算符,与自增自减运算符同级。
&&运算符优先级高于||,两者的优先级都低于关系运算符,高于赋值运算符。
4.结合性
逻辑非——右结合
逻辑与、逻辑或——左结合
5.求值原则
在逻辑表达式的求解过程中,只要能确定表达式的值,立即停止求值。
[例1]:a&&b 如果a为假,就不再判断b
若a=7,b=1,c=6,d=5,n=8,
求表达式中(m=a<b)&&(n=c+d)的值
表达式的值为?m的值为?n的值为?
[例2]:a||b 如果a为真,就不再判断b
若y=5,执行6>1||++y后,y的值为?
-
280-用P0口显示逻辑与运算结果(51单片机C语言实例Proteus仿真和代码)
2022-06-16 17:33:03280-用P0口显示逻辑与运算结果(51单片机C语言实例Proteus仿真和代码)280-用P0口显示逻辑与运算结果(51单片机C语言实例Proteus仿真和代码)280-用P0口显示逻辑与运算结果(51单片机C语言实例Proteus仿真和代码)280-用P0... -
什么是算术运算?什么是关系运算?什么是逻辑运算?
2019-06-07 10:02:53指按照规定的法则和顺序对式题或算式进行运算,并求出结果的过程。包括:加法、减法、乘法、除法、乘方、开方等几种运算形式。 其中加减为一级运算,乘除为二级运算,乘方、开方为三级运算。在一道算式中,如果有几...什么是算术运算?什么是关系运算?什么是逻辑运算?
【答案解析】
算术运算:
-
算术运算即“四则运算”,是加法、减法、乘法、除法、乘方、开方等几种运算的统称。
-
其中加减为一级运算,乘除为二级运算,乘方、开方为三级运算。在一道算式中,如果有多级运算存在,则应先进行高级运算,再进行低一级的运算。
-
C语言中的算熟运算符包括:
+
、-
、*
、/
、++
、--
、%
等种类。 -
如果只存在同级运算;则从左至右的顺序进行;如果算式中有括号,则应先算括号里边,再按上述规则进行计算。
示例:$ (1 + 1)^{2} * 4+5 * 3$
解析:
- 先进行括号内运算
1+1
,然后进行乘方运算得到结果4. - 接下来与4相乘,得到结果16
- 因为乘法优先级大于加法,因此先进行5*3,得到结果15
- 最终相加得到结果31
结果:31
关系运算:
-
关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、连接、除法、外连接等),而在C语言中,关系运算通常被认为是比较运算,将两个数值进行比较,判断比较结果是否符合给定的条件。
-
常见的关系运算符包括:
<
、<=
、>
、>=
、==
、!=
等种类。 -
其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。而前4种高于后2种。
-
例如,
>
优先于==
。而>
与<
优先级相同。 并且,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符(=)。
逻辑运算:
-
在逻辑代数中,有与、或、非三种基本逻辑运算。表示逻辑运算的方法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。而在C语言中,逻辑运算通常用于使用逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式用来测试真假值。
-
常见的逻辑运算符包括:
&&
、||
、!
等种类 -
&&
: 与是双目运算符,要求有两个运算对象,表示两个运算对象都成立,则结果为真,否则结果为假。
例如:(a<b) && (x>y),表示(a<b)和(x>y)同时成立则为真。
-
||
:是双目运算符,要求有两个运算对象,表示两个运算对象只要任意一个成立,则结果为真,否则结果为假。 -
例如:(a<b) && (x>y),表示(a<b)和(x>y)两个对象中任意一个成立则结果为真。
-
!
:是单目运算符,只要求有一个运算对象,表示取运算对象反义,运算对象为真则结果为假,运算对象结果为假则结果为真。 -
例如:!(a>b),表示(a>b)成立时结果为假,不成立时结果为真。
-
若在一个逻辑表达式中包含多个逻辑运算符,则优先次序为:
!
>&&
>||
。当然若一个逻辑表达式中包含括号括起来的子逻辑,则优先括号内的子逻辑判断。
示例:
-
(1>2)||(2>3)&&(4>3) 结果为0 !(1>2)||(2>3)&&(4>3)结果为1
-
注:
&&
优先级大于||
,((2>3)&&(4>3))无法同时成立,则结果为假,然后与(1>2)结果进行逻辑或运算,两者都为假因此第一次结果为假。 而第二次!
优先级最高,先对(1>2)的结果取逻辑非,得到结果为真,因此结果为真。
-
-
c语言第讲关系运算与逻辑运算if语句.pptx
2020-02-25 02:19:394.1 关系运算和逻辑运算 4.2 if语句 第四章 选择结构程序设计 4.1.1 逻辑值及其在C语言中的表示 关系运算和逻辑运算的运算结果都是一个逻辑值逻辑值只有两个值即真和假在C语言中用数值1来表示真用数值0来表示假 因此... -
最新单片机仿真 用P0口显示逻辑与运算结果
2022-05-21 08:19:34最新单片机仿真 用P0口显示逻辑与运算结果最新单片机仿真 用P0口显示逻辑与运算结果最新单片机仿真 用P0口显示逻辑与运算结果最新单片机仿真 用P0口显示逻辑与运算结果最新单片机仿真 用P0口显示逻辑与运算结果最新... -
【C语言基础入门】2.C语言中四则运算、关系运算、逻辑运算与位运算
2021-10-29 15:03:37逻辑运算 &&,||,! 位运算 &,|,^,>>,<<,~ 二、四则运算(+,-,*,/,%) 就是数学中的加,减,乘,除等运算 遵循先乘除后加减的运算优先级 可以使用括号改变运算顺序...文章目录
一、概述
C语言中支持下面4种类型的运算
运算类型 运算符 四则运算 +,-,*,/,% 关系运算 <,>,<=,>=,==,!= 逻辑运算 &&,||,! 位运算 &,|,^,>>,<<,~ 二、四则运算(+,-,*,/,%)
- 就是数学中的加,减,乘,除等运算
- 遵循先乘除后加减的运算优先级
- 可以使用括号改变运算顺序
注意:
C语言中的除法运算,其除数不能为0
下面通过一段程序感受一下:
#include <stdio.h> int main() { int a = 5; int b = 2; double c = 3; c = a / b; printf("c = %f\n", c); c = a % b; printf("c = %f\n", c); return 0; }
下面为输出结果:
通过上面的代码,可以得到一些小结论:
- 整型数的除法运算结果会舍弃小数部分
- 取余(%)运算也是一种除法运算,结果为余数
- 浮点数不能进行取余运算
三、关系运算(<,>,<=,>=,==,!=)
- 比较两个值大小关系或相等关系的运算
- 比较的结果为逻辑值 : 真(1),假(0)
- 可以使用括号()改变关系运算的顺序
如上面的图片所示,c 的值就为0
下面通过一段代码,感受一下:
#include <stdio.h> int main() { int a = 1; int b = 2; int c = 3; c = a != b; printf("c = %d\n", c); c = a - b >= a + b; printf("c = %d\n", c); c = (a < b) + (c < b); printf("c = %d\n", c); return 0; }
下面为输出结果:
小技巧:如果不同类型的运算同时出现在一个表达式中,那么尽量使用括号()指明运算顺序。
- 运算优先级(优先级:四则运算 > 关系运算 > 赋值操作)
- 四则运算
- 正负号 > 乘除运算 > 加减运算
- 关系运算
- 大小比较运算 > 相等比较运算
- 赋值操作
- 四则运算
下面看一段代码,深入感受一下运算优先级:
#include <stdio.h> int main() { int a = 1; int b = 2; int c = 0; c = a != b + a * b; printf("c = %d\n", c); return 0; }
下面为输出结果,可以看出,c 的输出结果为1,为什么为1呢?这是由于乘法优先级大于加法优先级大于关系运算优先级,所以程序执行过程是这样,先计算 a * b,然后将 a * b 的结果 2 加上 b,得到4,最后再比较 a != 4,得到的结果当然为1啦,我们还可以通过反汇编来观察代码的执行过程。
c = a != b + a * b的汇编代码 所以如果想得到a != b 再加上 a * b的结果,一定要记得加括号,如下:
#include <stdio.h> int main() { int a = 1; int b = 2; int c = 0; c = (a != b) + (a * b); printf("c = %d\n", c); return 0; }
这样才能得到正确结果,如下所示:
小结:
- 整型数除法有两种:取商(/),取余(%)
- 浮点数除法与数学中除法运算相同,结果为浮点数
- 不同运算的优先级不同,可使用括号改变运算优先级
- 同一个表达式中应避免不同的运算类型(四则运算,关系运算)
四、逻辑运算与位运算
- 逻辑运算(&&,ll,!)
- 逻辑运算的参与者为逻辑值(真或假)
- 任何非零值在逻辑运算中都为真
- 任何零值在逻辑运算中都为假
&&运算 左操作数 右操作数 结果 0 0 0 0 1 0 1 0 0 1 1 1 ||运算 左操作数 右操作数 结果 0 0 0 0 1 1 1 0 1 1 1 1 - 逻辑运算中的短路法则
- 对于&&运算
- 从左向右进行,如果有一个操作数为假,则整个表达式为假
- 第一个为假的操作数之后的其它操作数不再计算
- 对于||运算
- 从左向右进行,如果有一个操作数为真,则整个表达式为真
- 第一个为真的操作数之后的其它操作数不再计算
- 对于&&运算
- 取非运算(!)
- 单目运算(只需要一个操作数),运算结果为逻辑值
- 对真值取非的结果为假
- 对假值取非得结果为真
- 单目运算(只需要一个操作数),运算结果为逻辑值
话不多说,上代码:
#include <stdio.h> int main() { int a = 1; int b = 2; int c = 0; c = a && b; printf("c = %d\n", c); c = !(a - b) || (c < b); printf("c = %d\n", c); c = 10000; c = !!c; printf("c = %d\n", c); return 0; }
下面为运行结果:
- 位运算(&,|,~,^,<<,>>)
- 直接对数据的二进制位进行操作
- 位运算的基本单位是二进制位,所以也是一种0和1的操作
- 可以使用括号()改变位运算的运算顺序
- 位运算的操作数只能是整型数(浮点数不能直接进行位运算)
运算符 含义 示例 优先级 ~ 按位求反 ~0101 -> 1010 1(高) << 左移:高位移出,低位补0 0011 << 1 -> 0110 2 >> 右移:低位移出,高位补符号位 0101 >> 2 -> 0001 2 & 按位与 0111 & 1100 -> 0100 3 ^ 按位异或:相同为0,不同为1 0111 ^ 1100 -> 1011 4 | 按位或 0111 | 1100 -> 1111 5(低) 注:
1.按位与和逻辑与的计算法相同:两者为1,结果为1,否则为0
2.按位或和逻辑或的计算法相同:两者为0,结果为0,否则为1
- 位运算实例
- 将整数5的第2个二进制位置1
- 将整数7的第4个二进制位取反
- 将整数2的最后两位取反
- 将整数15右移2位,再将第2个二进制位置0
- 设变量a的二进制数是10101101,若想通过运算a ^ b使得a的中间4位取反,其余位不变,则b的值是多少?
代码如下:
#include <stdio.h> int main() { printf("c = %d\n", 5 | 2); printf("c = %d\n", 7 ^ 8); printf("c = %d\n", 2 ^ 3); printf("c = %d\n", (15 >> 2) & 13); printf("c = %d\n", 173 ^ 60); return 0; }
运行结果如下:
这里需要特别注意:对某一位或者某几位取反可以用异或(^)运算,这在工程里常用!!!
- 运算优先级(优先级从上到下为由高到低)
- 正负号>逻辑非>按位取反
- 乘除>加减>按位左右移
- 大小比较运算>相等比较运算
- 按位与>按位异或>按位或
- 逻辑与>逻辑或
- 赋值操作
- 小结
- 逻辑运算中有特殊的短路法则,结果确定后不再向下计算
- C语言中的真值对应非零值,假值对应零值
- 位运算直接对数据的二进制位进行操作
- 位运算的操作数只能是整型数(浮点数不能直接进行位运算)
五、深度剖析位运算
- 不同类型的本质在于:
- 占用的内存大小不同,如:short占用2字节,int占用4字节
- 表示具体数据的方式不同
- 正整数用原码表示,负整数用补码表示
- 整数型和浮点型的二进制表示不同
- 位运算时需要明确的知道的事
- 操作数的类型(占用的内存大小)
- 操作数是正数还是负数(符号位,数据表示)
- 不同类型的操作数先自动对齐再进行位运算(补符号位)
如下面的一段代码:
short a = 1; int b = 4; int c = a | b; printf("c = %d\n",c);
b为int类型,占4个字节,a为short类型,占2个字节。所以a要先要补符号位,由于a是正数,所以补0,这样就可以进行位运算了,得出c的结果为5。
下面来看一段代码:
#include <stdio.h> int main() { short a = 1; short b = 2; int c = a - b; c = c >> 4; printf("c = %d\n", c); c = c * -1 * 16 >> 4; printf("c = %d\n", c); printf("c = %d\n", 16 << 2); return 0; }
下面为输出结果:
- 小结论
- 正数符号位为0,右移运算时,高位补0,低位移除
- 负数符号位为1,右移运算时,高位补1,低位移除
- 左移运算时,最高位移除,低位补0
- 最高位的具体位置,由数据类型决定
- 类型补充小知识
- char 字符型,一个字节的整型,范围[-128,127]
- 字符数据(单引号括起来的字符)的本质是整型数
- char类型的变量可以打印为整数或者字符
再看一段代码:
#include <stdio.h> int main() { char c = 'A'; short a = c; int b = c; printf("c = %c\n", c); printf("c = %d\n", c); printf("a = %d\n", a); printf("b = %d\n", b); c = 0x40; printf("c = %x\n", c); printf("c = %d\n", c); c = c << 1; printf("c = %d\n", c); c = c << 1; printf("c = %d\n", c); return 0; }
下面为输出结果:
需要注意的是,因为c为char类型,所以64左移1位后,用二进制表示为1000 0000,最高位的1表示符号位,所以就是-128。
- 小结
- 不同类型的本质区别是:占用内存不同,数据表示不同
- 右移运算时,高位补符号位,低位移除
- char是只占用一个字节的整型,可表示英文字符
- 数据符号位的具体位置由数据类型决定
-
算术运算、关系运算与逻辑运算的区别
2019-03-18 13:14:29指按照规定的法则和顺序对式题或算式进行运算,并求出结果的过程。包括:加法、减法、乘法、除法、乘方、开方等几种运算形式。 其中加减为一级运算,乘除为二级运算,乘方、开方为三级运算。在一道算式中,如果有几... -
Matlab的关系运算和逻辑运算
2016-06-26 20:21:54Matlab的关系运算符 “<”,””,”>”,”>=”, “==”,”~=”. 运算法则: 1. 当两个变量是标量的时候,则执行简单的算术运算法则 2. 当一个为矩阵或者数组,另一是标量的时候, 标量与... 关系运算的输出是”与输入 -
算术运算和逻辑运算
2020-01-22 10:07:39而运算的基本类型包括算术运算和逻辑运算。想要了解计算机是如何实现运算的,我们就得从算术运算指令和逻辑运算指令开始说起。 这是我们非常熟悉的模型机。我们在最一开始介绍模型机时,就用了一条加法指令作为例子... -
关系运算(比较运算)逻辑运算
2019-08-16 09:05:45package 比较运算和关系运算一样叫法不一样 import ( “fmt” ) func main(){ //关系运算符(比较运算符) //关系运算符的结果都是bool型,也就是要么是true,要么是false //关系表达式经常用在if结构的条件中或循环... -
逗号运算、关系运算、逻辑运算和条件运算
2017-08-03 17:43:44逗号运算、关系运算、逻辑运算和条件运算 逗号运算和逗号表达式 格式 表达式1,表达式2 求解顺序及结果 先求解表达式1,再求解表达式2 最终结果为表达式2的值 例 a = 3 * 5 , a * 4 最终结果为60... -
算数运算和逻辑运算的区别
2021-05-31 20:38:26看了很多文章都没讲明白什么是算数运算和逻辑运算,这里我就结合一下自己看的很多文章和上课中学到的详细的讲解一下算数运算和逻辑运算。 tips:以下都是以二进制为准的。 1. 算数运算 其实我们平常十进制的 加减... -
2.7关系运算与逻辑运算
2017-03-11 19:56:022.7关系运算与逻辑运算 -
Java逻辑运算
2021-02-27 07:58:59逻辑运算是在关系运算基础之上的运算,能处理更加复杂的问题逻辑运算的结果是true或false一、逻辑运算的种类:在java的逻辑运算符中,有这么四类&&(短路与)、&(与)、||(短路或)、|(非短路或)使用规则:... -
C++关系运算和逻辑运算
2017-08-02 20:07:51往往要求根据某个指定的条件是否满足来决定执行的内容。例如,购物在1000元以下的打九五折,1000元及以上的打九折。 C++提供if语句来实现这种条件选择。...关系运算和关系表达式 上面if语句中的“amount -
数据对象的运算包括逻辑运算
2021-05-24 04:56:16如果是C语言,并且不是按位逻辑运算,答案肯定是D 因为C中的规定是非零数字表示真,0表示假,而逻辑运算就是对真假进行计算,所以在C中是任何类型的数据都可以进行逻辑运算,只要是非零数字就会被认为逻辑运算符两侧运算... -
二进位数进行逻辑运算1010AND1001的运算结果
2021-07-24 02:00:33二进制数二进制数有两个特点:它由两个基本数字0,1组成,二进制数运算规律是逢二进一。为区别于其它进制数,二进制数的书写通常在数的右下方注上基数2,或加后面加B表示。例如:二进制数10110011可以写成(10110011)... -
C语言中关系表达式和逻辑表达式的值是什么
2021-05-21 03:06:13逻辑运算又称布尔运算。布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。他用等式表示判断,把推理看作等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律 。这一逻辑理论人们常称它... -
matlab的一些考点2.3矩阵的相关运算——算术运算、关系运算、逻辑运算
2020-03-06 17:40:06点运算2.3.2 关系运算2.3.3 逻辑运算 2.3.1 算术运算 运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。 MATLAB有两类不同的算术指令运算:基本算术运算和点运算。 1.基本算数运算符 (1)矩阵的加减... -
C语言-指针的关系运算与逻辑运算
2019-08-14 16:43:19关系运算 问题: 今天遇到一个有趣的问题 … if(Rear->link&&Rear->link->expon>e) … 使用使用关系运算符判断指针是否为空。 解答 是不是对指针的任何运算都是合法的呢?答案是它可以执行... -
位运算与逻辑运算
2018-01-04 19:14:11小白开始学习编程,计算机基础知识很是薄弱,于是打开百度,恶补好多,下面我们讲讲位运算与逻辑运算的区别。 首先从概念上区分下,位运算是将运算符两边的数字换算成二进制(例:0000010001)后比较相同位置... -
二进制数的算术运算和逻辑运算
2021-04-08 19:28:25算术运算 二进制数加法采用逢二进一、减法采用借一作二。 十六进制数加法采用逢十六进一、减法采用借一作十六。 1位八进制可以写成3位二进制,因为3位二进制可以表示十进制范围0~7,也就是1位八进制的表示范围。 1位... -
R语言初级教程(05): 关系运算、逻辑运算
2018-10-08 10:04:09在介绍关系运算和逻辑运算之前,先说下R的逻辑常量:TRUE和FALSE。 在R中,TRUE和FALSE分别表示逻辑常量真和假,其值分别为1和0。 > TRUE + 0 [1] 1 > FALSE + 0 [1] 0 在其它语言中,TRUE和FALSE... -
详解图像处理的算术运算与逻辑运算
2022-03-14 15:35:27本文详细介绍了图像处理的算术运算与逻辑运算,包括图像加法、图像减法、图像与运算、图像或运算、图像非运算与图像异或运算。 -
C中位运算、逻辑运算
2018-10-24 21:05:39C中的位运算 &: 按位与(两者同为1则为1,否则为0) |:按位或 (两则同为0则为0,否则为1) ^: 按位异或(两则相同则为0,相异则为1) ~: 取反 (1取0,0取1) <<:左移 (相当于乘2) &... -
【详解】CPU执行算术运算或逻辑运算时,常将源操作数和结果暂存在()中
2020-11-02 08:33:36CPU执行算术运算或逻辑运算时,常将源操作数和结果暂存在()中 A、程序计数器(PC) B、累加寄存器(AC) C、指令寄存器(IR) D、地址寄存器(AR) 解析: 程序计数器:存放执行指令的地方,计算... -
MATLAB-逻辑运算
2021-07-06 22:29:15MATLAB逻辑运算都是针对元素的操作,运算结果是特殊的逻辑数组;在逻辑分析时,逻辑(真)用1表示,逻辑假用0表示,逻辑运算中所有的非零元素作为1处理。 注意: 使用MATLAB逻辑运算时的语法不要与C语言、Java等... -
关系运算符和逻辑运算符
2020-08-02 14:43:39关系运算符 ① 关系运算符用来进行比较运算 ②关系运算的结果是布尔值:true/false ③区分==和= ④不等于是!=不是<> 运算符 含义 示例 == 等于 a==b != 不等于 a!=b > 大于 a>b 小于 a >= 大于或等于 a>=b 小于或... -
运算器算术逻辑运算实验
2021-06-07 16:57:51《计算机组成原理》实验一——运算... 运用算术逻辑运算器进行算术运算和逻辑运算。 三. 实验仪器 ZY15Comp12BB 计算机组成原理教学实验箱一台 四. 实验原理 图1-1 运算器实验原理图 ...