一站式学习C编程 学习笔记(2)—运算符详解

本文详细介绍了C语言中的位运算,包括按位与、或、异或、取反及移位运算,同时还讨论了掩码的概念及其应用。此外,文章还提到了一些其他运算符,如复合赋值运算符、条件运算符、逗号运算符和sizeof运算符,并解释了它们的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、位运算

定义:C语言中提供的可以直接操作整数中的位的运算符;

1.1按位与、或、异或、取反运算

C语言中并不存在8位整数的位运算,故而操作数在做位运算之前都至少被提升为int型。

注意提升为整数后高位填充的0或者1在取反时都要进行运算的,千万不要忽视!!!

1.2移位运算

注意:移位的位数必须小于左操作数的总位数;

           在一定的取值范围内,讲一个整数左移一位相当于乘以2;

           建议只对无符号数做位运算,以减少出错的可能。

1.3掩码

对给定整数中的某些位进行处理;

1.4异或运算的特性:

①与自己做异或结果为0;

②与0异或还为自己,与1异或为相反值;

☂奇偶校验

④最神奇的功效:交换两个变量的值

常用方法: temp=a;a=b;b=temp;

借助于位运算==> a=a^b;b=b^a;a=a^b;

第二步中,b=b^(a^b)=b^a^b=a;

第三步中,同理可得a=b;

练习1:

不得借助额外的空间,交换两个变量的值;

还有一种方案:

a=a+b;

b=a-b;

a=a-b;

不过,大家应该会更倾向于位运算;

二、其他运算符

2.1复合赋值运算符

例:a+=1;<=等价于=>a=a+1;但其实是有差距的,前者只计算一次a,后者需要两次,即会存在效率问题;

当有side effect时,则执行的最终结果不同;

2.2条件运算符

表达式1?表达式2:表达式3

表达式1必须为标量;

表达式2和表达式3的类型要求一致;

2.3逗号运算符

左结合,但最终只返回最右边表达式的值作为最终结果。

2.4sizeof运算符与typedef类型声明

sizeof表达式;该表达式中的子表达式并不求值;因为在编译阶段就已经知道该子表达式的类型了,故而无需再运行阶段进行计算;

注意:sizeof的运行结果是size_t,该类型定义在头文件stddef.h中;











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值