欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++学习(五)之 运算符

程序员文章站 2024-01-13 10:30:04
运算符学习时的笔记(其实也没什么用,留着给自己看的) 运算符 用来对数据运算的符号 优先级 3+4*5+6 先乘除 然后加减 运算符优先级高就先算 40多个运算符 15层优先级 不需要背 1.查表 2.用括号改变优先级 (3+4)*5+6 运算规则 1.算术运算符 加减乘除 + - * / 求余符号 ......

运算符学习时的笔记(其实也没什么用,留着给自己看的)  

 

运算符 用来对数据运算的符号

优先级 3+4*5+6 先乘除 然后加减 运算符优先级高就先算

40多个运算符 15层优先级 不需要背
1.查表
2.用括号改变优先级
(3+4)*5+6

运算规则
1.算术运算符
加减乘除 + - * / 求余符号%
/ 除法 3/4 整数相除的结果仍然是整数 除完去掉小数部分
% 求余 只能整数之间 的求余 3%4 --->被除数-商*除数=余数
2.二进制运算符 用于整型
按位或 | 按位与& 取反~ 异或^
左移<<和右移>>运算符
(用8位二进制作为例子)
13 0000 1101
22 0001 0110

按位或| 两个数字 13|22= 0001 1111 运算规则 有1则1,无1则0
按位与& 两个数字 13&22= 0000 0100 有0则0
异或^ 两个数字 13^22=0001 1011 相同为0不同为1

取反~ ~22 1110 1001 二进制的所有位数 全部1变0 0变1(包括最高位)
(PS负数补码 取反加一码 ~22+1--->-22补码)
左移<< 22<<2 22左移两位 去掉22的二进制 前面2位 后面补两个0
22<<2--->01 0110 00-->88
一般 左移三位 相当于2^3 (成员8) 二进制 运算比乘法快
右移>> -22>>3 去掉后面的三位 然后前面补齐(补齐符号位 正数补0 负数前面补1)
1111 110 1 右移相当于除法 右移一位相当于除以2 (除法比较慢)

3.关系运算符

 

注意: 1.关系运算符的结果只能是0或1 2.关系运算符等于是两个= 不是一个


判断数字大小 满足条件1 不然结果为0 (分支 循环 )
大于> 小于< 大于等于>= 小于等于<= 不等于 != 等于==


3>4 0
5>4>3 0


逻辑运算符 串联两个条件
变量x 变量x大于3并且 x小于4
逻辑与 && x>3&&x<4 两边的条件都成立 最后结果是1 不然结果为0
逻辑或 || x大于3或者x小于4 x>3||x<4 两边条件有一个成立 结果是1 两边都不成立 结果为0
! 非 真变假 假变真 !1=0 !(3>4) ---->3<=4

 

组成一些复杂的条件 有或与非三个运算符 示例:计算当x=8的时候 3<x<7的结果 规则 逻辑或 两边条件都为假 最后的结果为假,有一边为真 结果为真 (有真则真) 逻辑与 有假则假 逻辑非 真变假 假变真 P.S. 1.或与非的条件 可以是关系运算符的表达式 或者用数字也行(0为假 非0为真) 2.截断 ||有真则真 所以只要左边的条件为真 右边的可以不判断 && 有假则假 所以左边的条件为假 右边可以不判断

可以用3>4 数字可以作为条件 (0为假 非0为真)
3||4 ---> 1
1>2&&3<4
补充知识点 : 截断 逻辑与 左边条件为假 右边式子不再计算
逻辑或 左边条件为真 右边式子不再计算

4.赋值运算符
= 赋值的意思 y=3 把3这个值赋给y 右值赋给左值 左值必须是变量
a+=n --->a=a+n a/=b--->a=a/b

5.三目运算符 ?:
条件?语句1:语句2 条件为真 执行语句1 条件为假 执行语句2
饿?吃饭:不吃饭

x=5>2?3:4 5>2条件成立 把3的值赋值给x 不成立 把4的值赋值给x

6.其他运算符
[] 数组里面讲
() 改变优先级
. -> 结构体那章讲

- 负号运算符 (单目) y=-x
强转 小数转换为整数 (int)3.14 (类型)值
*取值 解引用 指针讲到
& 取变量地址

sizeof(类型) 计算类型/变量大小 单位字节
逗号 表达式1,表达式2,表达式3 最后的结果是最后一个表达式的值

y=(1,2,3,4,5,6); y的结果是6

++ -- 自增 自减运算符

自增 给变量加1
自减 给变量减1

相同点 单独使用效果一样 给变量加1
不同点 前++快于后++
前++ ++x y=++x; 先加1 然后赋值 直接加1 立刻生效
后++ x++ y=x++ 先把x的值赋给y 然后x加1 延迟性buff
****************************************************************************************************************************************************************/
C++学习(五)之 运算符

 

 

 

运算符优先级

C++学习(五)之 运算符

 

 

或运算符的两边     0为假  非0为真    有真则真

 

 

2018.05.14    11:26:13