C 运算符
预计时间: 3分钟
在C语言中,运算符是告诉编译器执行特定数学或逻辑函数的符号。
C 支持一组丰富的运算符,它们是在表达式中使用的符号,用于指定在评估该表达式时要执行的操作。C 有以下运算符:
C算术运算符
| 算术运算符 | 描述 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 取模 |
| ++ | 自增 |
| -- | 自减 |
C关系运算符
| 关系运算符 | 描述 |
|---|---|
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
C逻辑运算符
| 逻辑运算符 | 描述 |
|---|---|
| && | 逻辑与 |
| || | 逻辑或 |
| ! | 逻辑非 |
| ? : | 三元运算符 |
C按位运算符
| 按位运算符 | 描述 |
|---|---|
| & | 按位与 |
| | | 按位或 |
| ^ | 按位异或 |
| ~ | 按位取反 |
| << | 按位左移 |
| >> | 按位右移 |
C赋值运算符
| 赋值运算符 | 描述 |
|---|---|
| = | 赋值 |
| += | 加后赋值 |
| -= | 减后赋值 |
| *= | 乘后赋值 |
| /= | 除后赋值 |
| %= | 取模后赋值 |
| <<= | 按位左移后赋值 |
| >>= | 按位右移后赋值 |
| &= | 按位与后赋值 |
| ^= | 按位异或后赋值 |
| |= | 按位或后赋值 |
C语言赋值语句一般形式是
变量名 = 表达式;
赋值中的类型转换
混用不同类型的变量时,发生类型转换。 在一个赋值语句中,类型转换的规则是:赋值语句的右部的类型转换成左部的类型。
多重赋值
允许多变量赋同一个值。
x=y=z=0;
C数据运算符
| 数据运算符 | 描述 |
|---|---|
| sizeof() | 获取......的大小 |
| [] | 数据下标 |
| & | ......的地址 |
| * | ......的值 |
| -> | 结构体解引用 |
| . | 结构体引用 |
sizeof是编译时一元操作符,返回其操作数(变量、类型)对应数据类型的字节数。
C其它运算符
| 杂项 | 描述 |
|---|---|
| , | 逗号 |
| () | 圆括号,小括号,调用函数,子表达式分组等等 |
| (typename) | 类型转换 |
| {} | 花括号,大括号 |
| : | 冒号 |
| // | 单行注释 |
| /* | 多行注释开始 |
| */ | 多行注释结束 |
逗号(,)运算符把若干表达式串在一起。 逗号的左侧总是求值为void型,也即最右侧逗号的右侧表达式变成逗号连接成的表达式的值。例如
/* 先把3赋值给y,然后把4赋值给x */
x = (y=3, y+1);
圆括号运算符用以提高括号内运算符的优先级。
优先级
优先级由高到低如下所示
()[]->.!~++---(type)*&sizeof*/%+-<<>><<=>>===!=&^|&&||? :=+=-=*=/=,
结合性
- 所有运算符都是左结合的
- 一元运算符
*&-和问号运算符? :是右结合的
更新于2022年04月09日