C语言——运算符

C语言——运算符C 语言中的各种运算符 详细介绍位运算符 c 语言运算符

大家好,欢迎来到IT知识分享网。

目录

前言

1、算术运算符

2、关系运算符

3、逻辑运算符

1、逻辑与( && )

2、逻辑或 ( || )

 3、逻辑非( !)

4、条件运算符(三目运算符)

5、位运算符

 1、& 按位与

2、| 按位或

3、^ 按位异或 

4、~ 按位取反 

 5、<<左移

6、>>右移

6、自增、自减运算符

7、逗号运算符

8、经典举例

前言

1bc66c1739264ad08bcef4e932ccd42b.png

1、算术运算符

完成算术运算操作:加( + )、减( – )、乘( * )、除( / )、取余( % )

2、关系运算符

比较运算,结果有两个值 成立为真:1,不成立为假:0

==(等于运算符)、!=(不等于运算符)、>(大于运算符)、>=(大于或等于运算符)、<=(小于或等于运算符)

进行比较运算,若 运算结果成立 为真,则结果值为 1,若结果为假,则结果值为0 a == b :判断 a 和 b 是否相等,相等则为真,结果值为 1 a != b :判断 a 和 b 是否不相等,不相等则为真,结果值为 1 a > b :判断 a 是否 大于 b,如果大于则为真,结果值为1 a < b a >= b a <= b

注意:浮点数如何判断两个数是否相等

1、浮点数不是精确的类型,无法使用 == != 来判断是否相等

2、需要转换为 >= 和

3、当两个浮点数在精度范围内相等,认为浮点数相等(float类型 +- 1e-6,double类型 +- 1e-15)

float a,b; a - b >= -0.000001 并且 a - b <= 0.000001 满足则相等

3、逻辑运算符

1、逻辑与( && )

格式: 注意 逻辑运算中,条件只看真假,在条件中把值 非0 为真, 0 为 假 条件1 && 条件2 判断条件1 和2 均为真,结果为真,值为 1 若有一个条件为假,则结果为假,值为 0 通常 逻辑与 用于判断多个条件是否是同时成立 注意: 若 条件1 不成立,逻辑与运算 之后的条件不会执行 ,整个 逻辑与 一定为假

2、逻辑或 ( || )

格式: 条件1 || 条件2 条件1 或者 2 有一个为真,结果为真 条件1 和 2 均为假,则结果为假 逻辑或:用于判断多个条件中是否有成立的情况 注意: 若 条件1 成立,逻辑或运算之后的条件不会执行,整个 逻辑或 一定成立

 3、逻辑非( !)

格式: ! 条件 若条件为真,则逻辑非运算结果为假 若条件为假,则结果为真

 练习

int n = 1, m=2; m>1 && n+1>2 int n = 1, m=2; m>1 && (n=n+1)>2 int n = 1, m=2; m>1 || (n=n+1)>2 int x = 3, y=4, z=5; (x+y)+z-1 && y+z/2 的结果 int x = 3, y=4, z=5; (x+y)+z-1 || y+z/2 的结果

 结果

0 0 1 1 1 

4、条件运算符(三目运算符)

格式: 条件 ? 表达式1 : 表达式2 如果 条件为真 , 则执行 表达式1,同时把表达式1的结果 作为 整个三目运算符的结果 如果 条件为假 , 则执行 表达式2,同时把表达式2的结果 作为 整个三目运算符的结果
//三目运算符 #include<stdio.h> int main(int argc,char *argv []) { int a=10,b=20; int c=a>b?a:b; printf("%d\n",c); return 0; }

5、位运算符

把数据的使用、运算按照二进制的形式进行处理,不考虑是否为整数、字符等,直接操作数据的位

数据的二进制存储

& : 位与 运算符 | : 位或 运算符 ~ : 位取反 运算符 ^ : 位异或 运算符 << :左移 运算符 >> :右移 运算符

 1、& 按位与

把两个数据中的每一位都进行 与运算 格式: a & b ,与: 同为 1,则为1, 若有0,则为0 5 & 9 0000 0101 & 0000 1001 -------------- 0000 0001 使用与运算,位 与 1,不变,与 0,则为 0 使用与运算来清除某些位 比如:把x 数中的第7bit 清除为0 x = 0xab 1010 1011 & 0111 1111 ------------- 0010 1011

2、| 按位或

把两个数据中的每一位都进行 或运算 格式: a | b ,与: 有1 ,为 1, 都为0,则为0 5 | 9 0000 0101 | 0000 1001 -------------- 0000 1101 使用或运算,位 或 1,为1 ,或 0,不变 使用或运算来置位为1 比如:把x 数中的第4bit 置为1,其他不变 x = 0xab 1010 1011 | 0001 0000 ------------- 1011 1011

3、^ 按位异或 

把两个数据中的每一位都进行 异或运算 格式: a ^ b ,异或: 相同为0,不同为1 5 ^ 9 0000 0101 ^ 0000 1001 -------------- 0000 1100 使用异或运算,位 异或 1,取反 ,异或 0,不变 使用异或运算进行对位取反 比如:把x 数中的第4bit 取反,其他不变 x = 0xab 1010 1011 ^ 0001 0000 ------------- 1011 1011

4、~ 按位取反 

对一个数中的每一位都进行取反 格式: ~a ,取反,对数据中的每一位都进行取反,0变为1,1变为0 ~5 ~ 0000 0101 ------------- 1111 1010 

 5、<<左移

把一个数的二进制整体向左移动指定位数,低位补0,高位溢出 格式: x << n ,把x 向 左移动 n位 5 << 3 : 0000 0101 << 3 ====> 0 0101 000 == 40 12 << 1 :0000 1100 << 1 ====> 000 1100 0 == 24 在有效数据位没有溢出的情况下。左移1bit,相当于乘以 2 192 << 1 : 1100 0000 << 1=====>100 0000 0 == 128

6、>>右移

把一个数的二进制整体向右移动指定位数,低位溢出 正数:高位补0 负数:高位补1 格式: x >> n ,把x 整体向右移动n位 -64 原码:1100 0000 补码:1100 0000 -64 >> 2 1100 0000 >> 2=====> 11 1100 00 ===> -16 64 原码:0100 0000 补码:0100 0000 64 >> 2 0100 0000 >> 2 =====> 00 0100 00 ===> 16 在有效位没有溢出的情况下,右移1bit,相当于除以2 

6、自增、自减运算符

++ 、 -- 变量++ : 先把变量的值作为 自增运算的结果,然后 把变量 +1(变量 = 变量+1) 先用,再加 ++变量 : 先把变量 +1(变量 = 变量+1),然后再把更新后的变量值作为 自增运算的结果 先加,再用

7、逗号运算符

连接多个表达式,每个表达式 用 逗号隔开,从第一个表达式开始,一直运算到 最后一个表达式为止,把最后一个表达式的值作为 整个逗号运算符表达式的结果

通常使用逗号运算时,都需要加上()

d49f610114b94691b6acf38c342b758f.png

8、经典举例

//有一个变量,unsigned char c //写出第六位置1 //写出第六位清0 //写出第六位取反 #include <stdio.h> int main(int argc, const char *argv[]) { unsigned char c=67; int a; a= 1<<6 | c ; printf("%u\n",a); a=~(1<<6) & c ; printf("%u\n",a); if((1<<6 | c)==c) { a=(~(1<<6)&c); printf("%u\n",a); } else if((1<<6 | c)!=c) { a=1<<6|c; printf("%u\n",a); } return 0; }
//用位运算和算数运算,实现两个数的交换 #include <stdio.h> int main(int argc, const char *argv[]) { int a,b; printf("请输入两个数:"); scanf("%d%d",&a,&b); printf("输入的数:a=%d,b=%d\n",a,b); //第一种方法,用算数运算 a=a+b; b=a-b; a=a-b; printf("a=%d,b=%d\n",a,b); //第二种方法 a=a^b; b=b^a; a=a^b; printf("a=%d,b=%d\n",a,b); return 0; }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114235.html

(0)
上一篇 2025-12-09 22:15
下一篇 2025-12-09 22:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信