C语言-操作符

算数操作符

加+

减-

乘*

除/

取模(求余数)%

细节说明:

如果是两个整数间的运算,3/2的结果是商1而不是1.5,想要得到余数就需要用3%2

另外,要想算出1.5,则需要使至少一个数值为浮点型,也就是3.0/2,才能得出1.5

对于初学者这是个很容易踩坑的地方

移位操作符

>>        <<

二进制向右移位和向左移位

比较抽象,来举个例子

2用二进制表示为10,那么我们向左移动一位默认低位补0,也就是100,就是十进制的4

于是很容易得出结论,每左移一位相当于扩大两倍

左移n位?相当于扩大2的n次方倍

同理,对8 (二进制为1000) 进行右移,移动一位100,变成了十进制的4,缩小了一半

所以每右移一位,相当于变为原来的一半

右移n位?相当于缩小至原来的1/2的n次方倍

位操作符

& 按位与

^ 按位异或

| 按位或

&运算可以理解为乘,在二进制中只有0和1,所以只要有一个数为0,&的结果一定为0

只有当两者都为1时,&的结果才可能为1

0&0=0

0&1=0

1&0=0

1&1=0

|为 或 运算,可以理解为加

只要有一个数为1,那么最终结果一定为1,只有两个数都为0,结果才可能为0

1 | 0 = 1

0 | 1 = 1

1 | 1 = 1

0 | 0 = 0

^为异或操作,异或即不同的时候才或,而两个二进制数不同的时候或的结果一定为1,所以异或简单来水就是两数不同的时候结果为1,其他情况为0;因此可推理出同或就是相同的时候结果才为1

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

这里如果不太理解可以去看看离散数学的真假,1为真,0为假

与运算同真则真,或运算同假才假,异或不同为真,同或相同为真

赋值操作符

=

这是赋值符号,不可理解为等于,C语言中的等于是==

下面这些是将前面的运算符和=进行复合的操作符

+=

-=

*=

/=

%=

&=

^=

|=

>>=

<<=

看起来很复杂,其实是一种简便的写法

比如a  = a + 1简写为 a += 1,其余类比即可

单目运算符

啥叫单目?就是只涉及一个数值

!        逻辑反

真值取反就是假,假取反就是真       

在C语言中认为0为假,其余数都为真

!1 假        !2 假        !0 真

-        负

-1        -2.3

+       正

+1        +2.3

&       取地址值

获取变量在内存中存放的地址数,十六进制表示(在内存章节会说明)

*        解引用

取得对应地址的数值

sizeof        操作数的类型长度,单位字节

前面已经用过

~        二进制数按位取反

~1011 结果为 0100

--        递减

--a       -号在前面,表示先计算-1,再使用变量a

a--        变量a在前,表示先使用变量a,再-1

举例:

int a = 3;

int b = a--;

请问a,b的值为多少?

a在前,先使用a的值3,赋值给b后,a再-1,因此a为2,b为3

那如果是int b = --a;呢?

--在前,a先-1,再赋值给b,因此a和b都为2

++      递增

同理递减

(类型)        强制类型转换

(int)3.14的结果为3,强制把一个浮点转换成了整型

关系运算符

==等于

>大于

>=大于等于

<小于

<=小于等于

!=不等于

注意关系运算符的结果一定为 真 假

逻辑操作符

逻辑与&&

全真则真

逻辑或||

全假才假

条件操作符

exp1 ? exp2 : exp3

吃了没 ?吃了 :没吃

对于exp1的值,为真则执行exp2,为假执行exp3

举例:

int a = b > 0 ? 1 : 0;

如果b大于0则a赋值1,否则赋值0

逗号表达式

表达式最终取值为最后一个表达式的值

举例:

int a = 1, b = 2, c =3;

int d = (c = a -1, a = b + c, c - 1);

最终把c-1的值赋值给d,但是这不代表前两个表达式没用,还是需要计算的,只不过最后的表达式作为最终值给了d

下标引用

arr[0]

函数调用

hello()

结构体成员

student.age

student->name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值