运算符
首先,运算符是用来干什么的?
答:提供运算符是用来操纵变量的
使用频率最高的几种运算符:
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 三目运算符
算术运算符:
注意:
- 如果+号的两边都是数字的话,那么这个+表示的数学上的加法。
- 如果+号的两边,只有有一个字符串,那么这个+表示的是字符串连接符。
- (++与- -)单独使用:放在操作数的前后对结果没有区别。
- (++与- -)运算使用:放在操作数的前后是有区别的,放在前边先自增或自减在参与运算,放在操作数的后边是先进行运算在进行自增或者自减。
- 除法运算时如果两边都是整数 结果就是整数(整除),如果两边至少存在一个小数,结果就是小数。
例:
int x=10;
int y=20;
int sum=(x++) +(--y) +(++x) +(y--) ;
求x,y,sum的值。
x = 12;
y = 18;
sum = 60;
赋值运算符:
赋值运算符 作用
= a = b;将b的值赋值给a。
+= a+=b;即就是a=a+b;将a+b的值赋值给a
-= a-=b;即就是a=a-b;将a-b的值赋值给a
/= a/=b;即就是a=a/b;将a/b的值赋值给a
*= a*=b;即就是a=ab;将ab的值赋值给a
%= a%=b;即就是a=a%;将a%b的值赋值给a
注意:左边必须是一个变量。
逻辑运算符:
逻辑运算符 作用
& 并且 有false则false
| 或者 有true则true
^ 异或 相同为false不同为true
! 非 非false则true 非true则false
&& 短路与
|| 短路或
注意:
- &&和&的区别:最终的结果一样;但是&&具有短路效果,左边为false,右边不执行。
- ||和|的区别:最终的结果一样;但是||具有短路效果,左边为true,右边不执行。
- 运算的结果肯定是一个boolean类型。
位运算符:
指的就是二进制之间的转换。
按位与 (&) :两位全为1,结果为1,否则为0;
按位或 (|) :两位有一个为1,结果为1,否则为0;
按位取反(~):0 变 1, 1变0;
按位异或(^):两位,如果相同,结果为0;如果不同,结果为1;
注意:
- 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示。
- 位运算符与逻辑运算符(逻辑与&&、逻辑或||、逻辑非! )有点相似。但是,逻辑运算符只能操作boolean变量。
例:
-11的“原码”是 : 1000 0000 0000 1011
求出对应的反码 : 1111 1111 1111 0100
求出对应的补码 : 1111 1111 1111 0101
所以在计算机中 ‘-11’ 对应的二进制为 ‘ 1111 1111 1111 0101 ’
三目运算符:
三目运算符的语法: 变量=布尔表达式 ? 值1 : 值2;
if(a<b)
min=a;
else
min=b;
可以用下面的条件运算符来处理
min=(a<b)?a:b;//有两个运算符,三个操作对象,所以也叫三目运算符。
//"(a<b)?a:b"是一个"条件表达式"
//它是这样执行的: 如果a<b为真,则表达式取a值,否则取b值.
例:
int a = 1, b = 2, z, c = 3;
z = a > b ? a : (b > c ? b : c);
//b不大于3所以括号里为3,a不大于b,所以输出:后边的数3.
cout << "z:" << z << endl;
输出的结果是:z:3