7.27C语言知识点之操作符

简介: 7.27C语言知识点之操作符

1.操作符分类

2.算数操作符

%只能用于整数运算

3.移位操作符

移位操作符的操作数只能是整数

注意:不能移动负位数,标准未定义

3.1

整数的二进制表示形式有三种:

原码、反码、补码

原码:按照数值的正负,直接写出的二进制序列

对于一个整数是四个字节,即32bit位

其二进制序列就是32bit位

对于有符号的整数来说,其第一位为符号位,表示正负,1表示负数,0表示正数

对于无符号整数来说(用unsigned int定义的变量),所有位都是有效位,没有符号位

对于正整数,其原码、反码、补码相同

对于负的整数来说,原码、反码、补码需要计算

反码:原码符号位不变,其他有效位按位取反

补码:反码二进制加1

整数,在内存中存储的都是补码的二进制序列,在计算时也使用的是补码

提示:补码取反 再+1也可以得到原码

3.2

左移操作符:

<<

左边丢弃、右边补0

提示:即使是负数,其运算之后不改变符号

有*2的效果

右移操作符:分为两种右移方式

算术右移和逻辑右移

逻辑右移:右边直接丢弃,左边补0

大部分编译器采用的是:

算术右移:右边直接丢弃,左边补符号位

原来是负数,左边补1

原来是正数,左边补0

有/2的效果

4.位操作符

操作数必须是整数

操作的是二进制位

4.1 &按位与

对应的二进制位都为1,则为1

否则为0

应用:

要知道一个数的二进制序列最低位是什么,将其&1,结果为1,则为1,否则为0

再结合移位操作符,就可以得知二进制序列的任意一位

4.2|按位或

对应的二进制位都为0,才为0

否则为1

4.3 ^按位异或

对应的二进制位相同为0,相异为1

注意:

a ^ 0 = a

a ^ a = 0

并且按位异或支持交换律

5.单目操作符

5.1!逻辑反操作

令假为真、真为假

可用于条件判断

5.2&取地址操作符

提示:数组指针存储数组地址

Int arr[10] = { 0 };

int(*pa)[10] = &arr;

5.3*解引用操作符(间接访问操作符)

int a = 0;

int*p = &a;

//*p 是通过p中存放的地址,找到p指向的对象,*p就是a

5.4 sizeof

计算类型创建的变量的大小,单位是字节

可以用以下三种形式

sizeof计算的结果是size_t类型的

size_t是无符号整型的

对size_t类型的数据进行打印,用%zd,当不支持%zd时,用%u

5.5 ~按位取反

1取反为0、0取反为1

提示:

-1的补码是32个1

6.逻辑操作符

6.1

&&逻辑与:并且

||逻辑或:或者

注意:短路操作

&&: 左边操作如果为假,右边则不再计算

||:左边操作如果为真,右边则不再计算

未完待续…

相关文章
|
19小时前
|
编译器 C语言
【C语言】:中移位操作符,位操作符详运算规则详解
【C语言】:中移位操作符,位操作符详运算规则详解
6 1
|
3天前
|
存储 编译器 C语言
C语言---操作符详解(1)
C语言---操作符详解
|
10天前
|
存储 C语言 索引
【C语言基础】:操作符详解(二)
【C语言基础】:操作符详解(二)
|
19天前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
23 3
|
19天前
|
存储 C语言
C语言:详解操作符(下)
C语言:详解操作符(下)
17 3
|
19天前
|
C语言
C语言学习记录——操作符习题、算数转换习题,多解法&优解法&单选题
C语言学习记录——操作符习题、算数转换习题,多解法&优解法&单选题
13 1
|
19天前
|
存储 编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
18 1
|
19小时前
|
算法 C语言
【C语言】:巧用移位操作符,位操作符解决问题
【C语言】:巧用移位操作符,位操作符解决问题
5 0
|
19小时前
|
编译器 C语言
【C语言】:sizeof操作符的使用和各种常见数据类型的大小
【C语言】:sizeof操作符的使用和各种常见数据类型的大小
6 0
|
3天前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)