1.赋值运算符
| 运算符 | 描述 | 实例 |
|---|---|---|
| = | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | C = A + B 将把 A + B 的值赋给 C |
| += | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 | C += A 相当于 C = C + A |
| -= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 | C -= A 相当于 C = C - A |
| *= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 | C *= A 相当于 C = C * A |
| /= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 | C /= A 相当于 C = C / A |
| %= | 求余数且赋值运算符,求两个操作数的模赋值给左边操作数,浮点数不适用取余数。 | C %= A 相当于 C = C % A |
典型的右结合性运算符是赋值运算符
2.算术运算符
- 加法运算符“+”:加法运算符为双目运算符,即应有两个量参与加法运算。如 a+b,4+8等。具有右结合性。
- 减法运算符“-”:减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5 等具有左结合性。
- 乘法运算符“*”:双目运算,具有左结合性。
- 除法运算符“/”:双目运算具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。
算术运算符的结合性是自左至右
3.关系运算符
| 关系 | 数学中的表示 | C语言的表示 |
|---|---|---|
| 小于 | < | < |
| 小于等于 | ≤ | <= |
| 大于 | > | > |
| 大于等于 | ≥ | >= |
| 等于 | = | == |
| 不等于 | ≠ | != |
=是赋值,而==才是判断相等的符号
关系运算符一般用于选择或者循环语句中
4.逻辑运算符
5.位操作运算符
:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
如下 int a=2如果看成二进制的话,那么其应该表示为0000000000000000000000000000010
因为int 占四个字节,则总位次为32个比特,一个比特就是一位二进制(最小储存单位)
#include <stdio.h>
int main()
{
int a = 2;
int b = a >>1;
printf("%d\n", b);
return 0;
}
float 占4字节:
符号位s(1 bit): 第31位,0表示正数,1表示负数
阶码位E(8 bits): 第30~23位,取值范围 -128~127
尾数位M(23 bits): 第22-0位,换算成十进制就是 2^23=8388608,所以十进制精度只有6 ~ 7位。小数点前的1省略,相当于23位表示24位的内容
6.逗号也是运算符
理论上,每条语句(分号结束),最终都会转换成一个值。

输出结果:a=5 因为a的值是整条语句的值,而整条语句的值是最后那个逗号后面的值
7.sizeof运算符
它用来计算变量(或数据类型)在当前系统中占用内存的字节数。
用于数据类型
siazeof ()必须加括号
printf("字符型变量占用的内存是=%d\n",sizeof(char)); // 输出:字符型变量占用的内存是=1
printf("整型变量占用的内存是=%d\n",sizeof(int)); // 输出:整型变量占用的内存是=4
用于变量
sizeof(变量名);
sizeof 变量名;
变量名可以不用括号括住,但是带括号的用法更普遍
8.C语言运算符优先级
来自运算符优先级与求值顺序-运算符与表达式-CSDNC技能树
一共十五级 越往前优先级越高
| 优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
| 1 | [] | 数组下标 | 数组名[常量表达式] | 左到右 | -- |
| () | 圆括号 | (表达式)/函数名(形参表) | -- | ||
| . | 成员选择(对象) | 对象.成员名 | -- | ||
| -> | 成员选择(指针) | 对象指针->成员名 | -- | ||
| 2 | - | 负号运算符 | -表达式 | 右到左 | 单目运算符 |
| ~ | 按位取反运算符 | ~表达式 | |||
| ++ | 自增运算符 | ++变量名/变量名++ | |||
| -- | 自减运算符 | --变量名/变量名-- | |||
| * | 取值运算符 | *指针变量 | |||
| & | 取地址运算符 | &变量名 | |||
| ! | 逻辑非运算符 | !表达式 | |||
| (类型) | 强制类型转换 | (数据类型)表达式 | -- | ||
| sizeof | 长度运算符 | sizeof(表达式) | -- | ||
| 3 | / | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
| * | 乘 | 表达式*表达式 | |||
| % | 余数(取模) | 整型表达式%整型表达式 | |||
| 4 | + | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
| - | 减 | 表达式-表达式 | |||
| 5 | << | 左移 | 变量<<表达式 | 左到右 | 双目运算符 |
| >> | 右移 | 变量>>表达式 | |||
| 6 | > | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
| >= | 大于等于 | 表达式>=表达式 | |||
| < | 小于 | 表达式<表达式 | |||
| <= | 小于等于 | 表达式<=表达式 | |||
| 7 | == | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
| != | 不等于 | 表达式!= 表达式 | |||
| 8 | & | 按位与 | 表达式&表达式 | 左到右 | 双目运算符 |
| 9 | ^ | 按位异或 | 表达式^表达式 | 左到右 | 双目运算符 |
| 10 | | | 按位或 | 表达式|表达式 | 左到右 | 双目运算符 |
| 11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
| 12 | || | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
| 13 | ?: | 条件运算符 | 表达式1? 表达式2: 表达式3 | 右到左 | 三目运算符 |
| 14 | = | 赋值运算符 | 变量=表达式 | 右到左 | -- |
| /= | 除后赋值 | 变量/=表达式 | -- | ||
| *= | 乘后赋值 | 变量*=表达式 | -- | ||
| %= | 取模后赋值 | 变量%=表达式 | -- | ||
| += | 加后赋值 | 变量+=表达式 | -- | ||
| -= | 减后赋值 | 变量-=表达式 | -- | ||
| <<= | 左移后赋值 | 变量<<=表达式 | -- | ||
| >>= | 右移后赋值 | 变量>>=表达式 | -- | ||
| &= | 按位与后赋值 | 变量&=表达式 | -- | ||
| ^= | 按位异或后赋值 | 变量^=表达式 | -- | ||
| |= | 按位或后赋值 | 变量|=表达式 | -- | ||
| 15 | , | 逗号运算符 | 表达式,表达式,… | 左到右 | -- |
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:
! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
258

被折叠的 条评论
为什么被折叠?



