运算符与优先级

优先级

1.括号优先级最高

2.算术运算符优先级高于关系运算符

3.逗号运算符优先最低
!>算术运算符>关系运算符>&&>||>赋值运算符

算数运算符——从左至右
赋值运算符——从右至左

优先级 操作符
1 () [] -> .
::
! ~ ++ --
2 - (负号) * (取内容)
& (取首地址) sizeof
3 ->* .*
4 * (乘) / %
5 + -
6 << >>
7 < <= > >=
8 == !=
9 & (按位与)
10 ^
11 |
12 &&
13 ||
14 ? :
15 = += -= etc.
16 ,

运算符

一算术运算符

加减乘除求余数+-*/%

int n=7/2

printf("%d",n)

//输出为3,因为是整型,把小数舍弃掉了

float n=7/2===>还是为3

而float n=7/2.0===>结果为3.5

二关系运算符

大于 >

小与 <

等于 ==

不等于 !=

大于等于 >=

小于等于 <=

运算规则:从左到右依次比较,比较完一个运算符后,返回一个bool值,返回的bool值继续参与下一次比较
不允许使用连续的判断

三逻辑运算符

与:&& 二者都为真才是真的

或:|| 有一个真就为真

非:! !表达式——改变真假

注意

int a = 1, b = 2, c = 3;
bool is = (a > b) && (c = 6);

前面为假,不在执行后面,所以c还是等于3

​ cout << "a=" << a<<endl
​ << "b=" << b<<endl
​ << "c=" << c << endl;

输出的c=3

​ a = 1, b = 2, c = 3;
​ is = (a > b) || (c = 6);

前面为假,可执行后面,所以c为6

​ cout << "a=" << a << endl
​ << "b=" << b << endl
​ << "c=" << c << endl;

输出的c=6

1.对于&&需要前后表达式都为真,整个逻辑表达式才为真,当前面的表达式为假,不在执行后半部分

2.对于||需要前后表达式都为假,整个逻辑表达式才为假,当前半部分已经为真,不在执行后半部分

四赋值运算符(双目运算符)

int a;
a = 10;
bool b;
b = a = 0;
cout << "b=" << b << endl;

从右到左赋值

五自增自减运算符(单目运算符)

前置后置的区别

a++===》先操作,再执行a=a+1

++a===》先执行a=a+1,再操作

a++不能做左值,a++是一个常量,++a是一个变量

后置优先级比前置优先级高

六条件运算符(三目运算符)

写法:

(表达式1)?(表达式2):(表达式3)

规则:

先执行表达式1,如果表达式1位真,就执行表达式2,为假就执行表达式3

七逗号表达式

写法:

int n;

n=((表达式1),(表达式2),......,(表达式n));

最后n=表达式n的值

运算规则:

从左到右,依次计算,取最后一个表达式的值(表达式的个数不受限制)

int a = 1, b = 2, c = 3;
int n;
n = ((++a), (a++), (a = 10), (c = a), (b = 80), a);
cout << "a=" << a << endl ;  //a=10
cout << "b=" << b << endl ;	//b=80
cout << "c=" << c << endl ; //c=10
cout << "n=" << n << endl ;	//n=10

八括号运算符

()[]

括号括起来的先算,有多个括号,从左到右算

九位操作运算符

按位与 &

按位或 |

按位非 ~

按位异或 ^

左移 <<

右移 >>

十其他运算符

箭头 ->

点 .

负号 -

取内容 *

取首地址 &

求字节数 sizeof()

posted @ 2020-11-11 15:44  kisfly  阅读(412)  评论(0编辑  收藏  举报