运算符是描述对数据进行的运算(操作)、体现数据之间运算关系的符号,运算符也叫操作符,运算符是表达式的重要组成部分,运算符包括:算术运算符、关系运算符、逻辑运算符、位运算科符和赋值运算符等。
算术运算符:
根据参加运算的操作数的个数,运算符又分为一元运算符,二元运算符和三元运算符等。
算术运算符有两种形式:一元运算符和二元运算符。
一元运算符包括:-,++,--三个,分别表示取反,自加1,自减1.
运算符 | 作用 | 说明 | |
- | 取反 | 做取反运算 | b=-a |
++ | 自加1 | 先加1再取值或先取值再加1 | ++i 或 i++ |
-- | 自减1 | 先减1再取值或先取值再减1 | --i 或 i-- |
代码
#include <iostream>
using namespace std;int main() {int i = 1;cout << "i=" << i << endl;//先加1再取值cout << "++i=" << ++i << endl;//先取值再加1cout << "i++=" << i++ << endl;cout << "i=" << i << endl;//先减1再取值cout << "--i=" << --i << endl;//先取值再减1cout << "i--=" << i-- << endl;//取反cout << "-i=" << -i << endl;
}
执行结果为:
i=1
++i=2
i++=2
i=3
--i=2
i--=2
-i=-1
--------------------------------
Process exited after 0.1439 seconds with return value 0
二元算术运算符:连接两个表达式,就是两者结果相减,是二元运算符
运算符 | 作用 | 说明 | |
+ | 加法运算 | 两个数相加 | c=a+b |
- | 减法运算 | 两个数相减 | c=a-b |
* | 乘法运算 | 两个数相乘 | c=a*b |
/ | 除法运算 | 两个数相除 | c=a/b |
% | 取余数运算 | 两个数相除的余数 | c=a%b |
#include <iostream>
using namespace std;int main() {int a = 10;int b = 3;//加cout << "c=a+b=" << a + b << endl;//减cout << "c=a-b=" << a - b << endl;//取积cout << "c=a*b=" << a*b << endl;//取商cout << "c=a/b=" << a / b << endl;//取余cout << "c=a%b=" << a % b << endl;}
执行结果为:
c=a+b=13
c=a-b=7
c=a*b=30
c=a/b=3
c=a%b=1
关系运算符:
关系运算符也叫比较运算符,是比较两个对象的:
运算符 | 作用 | 说明 | |
== | 相等 | 检查两个操作数的值是否相等,如果相等则条件为真。 | a == b |
!= | 不相等 | 检查两个操作数的值是否相等,如果不相等则条件为真。 | a != b |
> | 大于 | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | a > b |
< | 小于 | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | a < b |
>= | 大于等于 | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | a >= b |
<= | 小于等于 | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | a <= b |
#include <iostream>
using namespace std;int main() {int a = 5;int b = 1;int c ;cout << "a>b=" << (a > b) << endl ;cout << "a<b=" << (a < b) << endl ;cout << "a=b=" << (a == b) << endl ;if ( a == b ) {cout << "a 等于 b" << endl ;} else {cout << "a 不等于 b" << endl ;}if ( a < b ) {cout << "a 小于 b" << endl ;} else {cout << "a 不小于 b" << endl ;}if ( a > b ) {cout << "a 大于 b" << endl ;} else {cout << "a 不大于 b" << endl ;}cout << "---------------------------------" << endl ;/* 改变 a 和 b 的值 */a = 5;b = 6;cout << "a>b=" << (a > b) << endl ;cout << "a<b=" << (a < b) << endl ;cout << "a=b=" << (a == b) << endl ;if ( a <= b ) {cout << "a 小于或等于 b" << endl ;}if ( b >= a ) {cout << "b 大于或等于 a" << endl ;}cout << "---------------------------------" << endl ;/* 改变 a 和 b 的值 */a = 5;b = 5;cout << "a>b=" << (a > b) << endl ;cout << "a<b=" << (a < b) << endl ;cout << "a=b=" << (a == b) << endl ;if ( a == b ) {cout << "a 等于 b" << endl ;} else {cout << "a 不等于 b" << endl ;}if ( a < b ) {cout << "a 小于 b" << endl ;} else {cout << "a 不小于 b" << endl ;}if ( a > b ) {cout << "a 大于 b" << endl ;} else {cout << "a 不大于 b" << endl ;}if ( a <= b ) {cout << "a 小于或等于 b" << endl ;}if ( b >= a ) {cout << "b 大于或等于 a" << endl ;}return 0;
}
看执行结果:
a>b=1
a<b=0
a=b=0
a 不等于 b
a 不小于 b
a 大于 b
---------------------------------
a>b=0
a<b=1
a=b=0
a 小于或等于 b
b 大于或等于 a
---------------------------------
a>b=0
a<b=0
a=b=1
a 等于 b
a 不小于 b
a 不大于 b
a 小于或等于 b
b 大于或等于 a
--------------------------------
Process exited after 0.1268 seconds with return value 0
逻辑运算符
逻辑运算符其实对应了逻辑电路里的与门、或门和非门,逻辑运算符一共有三个:
运算符 | 作用 | 说明 | |
&& | 逻辑与运算 | 称为逻辑与运算符。如果两个操作数都 true,则条件为 true。 | (A && B) 为 false。 |
|| | 逻辑或运算 | 称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。 | (A || B) 为 true。 |
! | 逻辑非运算 | 称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。 | !(A && B) 为 true。 |
表达式为:
操作数A && 操作数B
操作数A || 操作数B
!操作数
操作数期望为布尔类型。若非布尔类型,则进行隐式转换:非零值转换为 true ,零值转换为 false 。
#include <iostream>
using namespace std;int main() {bool a = true;bool b = false;cout << "a&&b=" << (a && b) << endl ;cout << "a||b=" << (a || b) << endl ;cout << "!a=" << (!a ) << endl ;cout << "!b=" << (!b ) << endl ;return 0;
}
看输出结果:
a&&b=0
a||b=1
!a=0
!b=1
--------------------------------
Process exited after 0.1068 seconds with return value 0
0表示false,1表示true.
赋值运算符
赋值运算符分为两类:简单赋值运算符和复合赋值运算符
简单赋值运算符,如a=b这个就是一个简单赋值运算符。
#include <iostream>
using namespace std;int main() {int a=3;//将a的值赋值给bint b=a;return 0;
}
直接使用等号赋值的就属于一个简单方式,但是注意,要求左右的操作数,必须为非只读的变量,不能是数字,比如1+2=3,那么这个就不属于赋值操作符了。
复合赋值运算符
复合赋值运算符是将算术运算符与简单赋值运算符结合起来的运算符。比如 a+=1,属于一个复合操作,其实是a=a+1的简化。
运算符 | 作用 | 说明 | |
+= | 加法复合赋值运算符 | 将右侧数加到左侧数上 | a += b |
-= | 减法复合赋值运算符 | 从左侧数减去右侧数 | a -= b |
*= | 乘法复合赋值运算符 | 将右侧数乘到左侧数上 | a *= b |
/= | 除法复合赋值运算符 | 从左侧数除以右侧数 | a /= b |
%= | 模符合赋值运算符 | 从左侧数取余以右侧数 | a %= b |
#include <iostream>
using namespace std;int main()
{int a = 7;int b ; b = a;cout << "b 的值 = : " <<b<< endl ; b += a;cout << "b 的值 = : " <<b<< endl ; b -= a;cout << "b 的值 = : " <<b<< endl ; b *= a;cout << "b 的值 = : " <<b<< endl ; b /= a;cout << "b 的值 = : " <<b<< endl ; b = 30;b %= a;cout << "b 的值 = : " <<b<< endl ; return 0;
}
执行结果如下:
b 的值 = : 7
b 的值 = : 14
b 的值 = : 7
b 的值 = : 49
b 的值 = : 7
b 的值 = : 2
--------------------------------
Process exited after 0.1075 seconds with return value 0
由于初学,用不到很复杂的业务逻辑,针对其它更多的复合操作符 ,在使用的时候再讲解,这里只讲针对初学使用的。
除了上面讲的,还有其它的运算符,比如指针运算符(取地址 &,返回变量*),条件运算符(三目)等在使用时再讲。
运算符的优先级
运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。
在前期使用的时候,运算符的优先级与大学字的四则运算基本上一致。