操作符
操作符
Mxne算术运算符
加(+) 减(-) 乘(*) 除(/) 取余(%)
注意:
%
(取余) 两个操作数 必须 为 整数,而其他的几个操作符整数、浮点数都可。/
(除法) 操作符如果两个操作数都为整数,结果取整数。而只要有浮点数在运算符两边,结果就为浮点数。
1 | int main() |
移位操作符
<< 左移操作符 左边抛弃、右边补0
>> 右移操作符
注意:移位操作符的操作数 只能是 正整数。
1 | int main() |
位操作符
按位与运算(& ):两个1结果才为1,否则就是0。
按位或运算(|):只要有一个是1,就为1,两个0为0。
按位异或运算(^):相同为0,相异为1。(同假异真)
注意:操作数 只能是 整数。
赋值操作符
连续赋值:执行顺序 从右到左 a=x=y+1 —> x=y+1 a=x
复合赋值:+= -= *= /= %= >>= <<= &= |= ^=
单目操作符
只有一个操作数
!: 逻辑反操作
-: 负值
+: 正值
&: 取地址
sizeof: 计算变量所占内存空间的大小(以字节为单位) sizeof是操作符,不是函数。
~: 对一个数的二进制按位取反
—: 前置、后置—
++: 前置、后置++
*: 间接访问操作符(解引用操作符)
(类型) : 强制类型转换
1 | int main() |
注意:多个i++相加(不同的编译器,答案不同),但是我遇到的题目答案都是统一的(也就是visual studio)
1 | int main() |
答案不唯一
关系操作符
!= == > < >= <=
关系操作符返回 1(真) 或 0(假)
注意:判断相等用==,不是=
逻辑操作符
&& 逻辑与
|| 逻辑或
注意:
- &&遇到一个为假,就停止(短路)
- ||遇到第一个为真,就停止(断路)
- &&的优先级高于||
1 | 区分逻辑与和按位与 区分逻辑或和按位或 |
1 |
|
条件操作符
exp1 ? exp2 : exp3
它可替换if…else
条件操作符又叫 三目操作符
可以给三目操作符进行赋值,成立的那个表达式的结果就是该变量的结果
1 | int main() |
逗号表达式
exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
1 | int main() |
下标引用、函数调用和结构成员
1. [ ] 下标引用操作符
1 | int arr[10]; //创建数组 |
2. ( ) 函数调用操作符
1 | void test1() |
3. 访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名
运算符优先级
查看图片测试
运算符结合律
如果一个表达式中的两个操作数具有相同的优先级,那么它们的结合律。决定它们的组合方式是从左到右或是从右到左。