C++语言基础--02_运算符

运算符

一 算术运算符

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

    int a = 2, b = 4;

int c = a + b;
cout << "c = " << c << endl; // 6

int d = a - b;
cout << "d = " << d << endl; // -2

int e = a * b;
cout << "e = " << e << endl; // 8

int f = 5 / 2;
cout << "f = " << f << endl; // 0
// 0:int是整型 整数运算 结果还是整数,小数部分直接忽略

int g = b / a;
cout << "g = " << g << endl; // 2

float f0 = 2, f1 = 4;
float ff = f0 / f1;
cout << "ff = " << ff << endl; // 0.5

int num = 5 % 2; // 求5除以2的余数 %:求余 取模
cout << "num = " << num << endl;

int n = 5;
float m = 2.0;
float number = n / m;
cout << "number = " << number << endl; // 2.5
// 当参与运算的数据存在小数时,结果是小数

// % 两边都必须是整数

// 总结:运算结果以参与运算的数据中精度高的为准

二 关系运算符

大于 >

小于 <

等于等于 ==

大于等于 >=

小于等于 <=

不等于 !=

    bool b = 3 > 7;
cout << "b = " << b << endl;

bool b = 3 != 3;
cout << "b = " << b << endl;
运算规则:先比较 然后 成立为真 不成立为假
注意:运算顺序为从左至右

三 逻辑运算符

运算完成之后会给出一个bool值

&& 前后两者都为真,表达式为真 否则为假

    bool b = (2 > 3) && (3 < 4);
cout << "b = " << b << endl; // 0

bool b = (2 < 3) && (3 < 4);
cout << "b = " << b << endl; // 1

|| 前者或后者为真,表达式为真 否则为假

    bool b = (2 > 3) || (3 < 4);
cout << "b = " << b << endl; // 1

bool b = (2 < 3) || (3 < 4);
cout << "b = " << b << endl; // 1

bool b = (2 > 3) || (3 > 4);
cout << "b = " << b << endl; // 0

反转真假

    bool b = !(2 > 3);
cout << "b = " << b << endl; // 1
注意:运算顺序为从左至右
1 对于&&运算符,由于需要前后都为真整个表达式才为真,所以,当前面为假时,确定整个表达式为假,所以不会继续运算后面的表达式。
2 对于||运算符,由于只要前后有一个为真整个表达式就为真,所以,当前面为真时,确定整个表达式为真,所以不会继续运算后面的表达式。
eg1:
int a = 1, b = 2;
bool bo = (a = a + b) && (b = a + b);
cout << "a = " << a << endl; // 3
cout << "b = " << b << endl; // 5
cout << "bo = " << bo << endl; // 1

eg2:
int a = 1, b = 2;
bool bo = (a = a + b) || (b = a + b);
cout << "a = " << a << endl; // 3
cout << "b = " << b << endl; // 2
cout << "bo = " << bo << endl; // 1

// 需要特别注意是否会继续向后运算

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

赋值 =

可以和算术运算符组合使用(复合赋值运算符)

+= -= *= /= %=

    int a = 1, b = 2;
a -= 1; // 等价于 a = a - 1;
cout << "a = " << a << endl; // 0
a += 2; // 等价于 a = a + 2;
cout << "a = " << a << endl; // 2
a *= b; // 等价于 a = a * b;
cout << "a = " << a << endl; // 4
a /= b; // 等价于 a = a / b;
cout << "a = " << a << endl; // 2
a += 1; // 等价于 a = a + 1; 3
a %= 2; // 等价于 a = a % 2;
cout << "a = " << a << endl; // 1

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

由于自身参与运算并且最后会改变自身的值,所以必须是变量。

++:自身加一 --:自身减一

1 自增 ++

    int a = 1;
a++; // 等价于 a = a + 1;
cout << "a = " << a << endl; // 2
++a; // 等价于 a = a + 1;
cout << "a = " << a << endl; // 3


int c0 = 0;
bool b0 = c0++; // 后置 先用c0给b0赋值 再c0++
cout << "c0 = " << c0 << endl; // 1
cout << "b0 = " << b0 << endl; // 0

int c1 = 0;
bool b1 = ++c1; // 前置 先c1++ 再用c0给b0赋值
cout << "c1 = " << c1 << endl; // 1
cout << "b1 = " << b1 << endl; // 1

// 后置:先用再加 前置:先加再用

2 自减 --

同上

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

	//(表达式1) ? (表达式2) : (表达式3);
	//规则:先执行表达式1 为真执行表达式2 为假执行表达式3

	int a = 1, b = 2, c = 3;
	(a > 0) ? (b++) : (c++);
	cout << "a = " << a << endl;	// 1
	cout << "b = " << b << endl;	// 3
	cout << "c = " << c << endl;	// 3

七 逗号运算符

逗号 ,

// 逗号运算符 ,
// 运算规则:从左至右依次运算 取最后一个表达式的值(表达式个数不受限制)

int a = 1, b = 2, c = 3;
int num = ((a++), (a = b + 1), c, (a + b + c));
cout << "a = " << a << endl;		// 3
cout << "b = " << b << endl;		// 2
cout << "c = " << c << endl;		// 3
cout << "num = " << num << endl;	// 8

八 括号

() []

()括号括起来的先算

九 其他运算符

箭头 ->

.

负号 -

取内容 *

取地址 &

求字节数 sizeof

 

十 位操作运算符

按位非 ~

左移 <<

右移 >>

按位与 &

按位异或 ^

按位或 |

优先级

括号优先级最高 ()

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

赋值在逗号前面 = += -= ……

逗号优先级最低 ,

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

 

 

 

原文地址:https://www.cnblogs.com/ZhenXin0101/p/13191316.html