系列文章目录
1、初识C++
http://t.csdnimg.cn/WIT0Z
2、数据类型
http://t.csdnimg.cn/CoURP
3、运算符
http://t.csdnimg.cn/5Q7qc
未完待续
文章目录
前言
本文将介绍一下几种运算符:
算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符
一、算术运算符
1.加、减、乘、除运算符
#include <iostream>
using namespace std;
int main () {
//加法运算符
int a = 10 + 20;
cout << a << endl;
//减法运算符
a = 10 - 20;
cout << a << endl;
//乘法运算符
a = 10 * 20;
cout << a << endl;
//除法运算符
a = 10 / 20;
cout << a << endl;
//a的类型为整型,但是10 / 20有小数位0.5所以只取商0,余数省略
//改为浮点型就可以输出小数位
return 0;
}
2. 取模运算符
% ➡️将两个数相除的余数作为结果
#include <iostream>
using namespace std;
int main() {
int a = 10 % 20;
//取模,只取余数作为结果,10 / 20的结果为0.5,余数为5
cout << a << endl;
a = 20 % 10;//20 / 10的结果为2,被整除了余数就为0
cout << a << endl;
return 0;
}
注意:除数不可为0、小数不可以做取模运算
3.自增、自减运算符
++ ➡️执行之后加1
- - ➡️执行之后减1
#include <iostream>
using namespace std;
int main() {
//自增运算符
//分为前置++和后置++
int a = 1;
int b = a++;//前置++,先使用再自增1
cout << a << endl;//结果为2,在b被赋值时a自增1
cout << b << endl;//结果为1,先把a自增1之前的值赋给b,然后a再自增1
cout << "\n";
a = 1;
b = ++a;//后置++,先自增1再使用
cout << a << endl;//结果为2,在b被赋值时自增1
cout << b << endl;//结果位2,先使a自增1,再将a自增后的值赋给b
a = 1;
b = 2;
cout << a++ << endl;//先使用了a输出,a再自增1
cout << ++b << endl;//b先自增1,再输出b
return 0;
}
下面的自减就是自减1,规则与自增相同
#include <iostream>
using namespace std;
int main() {
//自减运算符
//分为前置--和后置--
int a = 1;
int b = a--;//前置--,先使用再自减1
cout << a << endl;//结果为2,在b被赋值时a自减1
cout << b << endl;//结果为1,先把a自减1之前的值赋给b,然后a再自减1
cout << "\n";
a = 1;
b = --a;//后置--,先自减1再使用
cout << a << endl;//结果为2,在b被赋值时自减1
cout << b << endl;//结果位2,先使a自减1,再将a自减后的值赋给b
a = 1;
b = 2;
cout << a-- << endl;//先使用了a输出,a再自减1
cout << --b << endl;//b先自减1,再输出b
return 0;
}
二、比较运算符
== ➡️比较两个值是否相等,相等返回真,不相等返回假
#include <iostream>
using namespace std;
int main() {
// ==
cout << (1 == 1) << endl;//输出1,1与1相等,结果为真
cout << (1 == 2) << endl;//输出0,1与2不相等,结果为假
return 0;
}
!= ➡️ 比较两个值是否不相等,不相等返回真,相等返回假
#include <iostream>
using namespace std;
int main() {
// !=
cout << (1 != 1) << endl;//输出0,1与1相等,结果为假
cout << (1 != 2) << endl;//输出1,1与1不相等,结果为假
return 0;
}
> ➡️ 比较左边的值是否大于右边的值,大于返回真,小于返回假
< ➡️ 比较左边的值是否小于右边的值,小于返回真,大于返回假
>= ➡️ 比较左边的值是否大于等于右边的值,大于等于返回真,小于返回假
<= ➡️ 比较左边的值是否小于等于右边的值,小于等于返回真,大于返回假
#include <iostream>
using namespace std;
int main() {
// >
cout << (1 > 2) << endl;//输出0,1不大于2,为假
cout << (2 > 1) << endl;//输出1,2大于1,为真
cout << "\n";
// <
cout << (1 < 2) << endl;//输出1,1小于2,为真
cout << (2 < 1) << endl;//输出0,2大于1,为假
cout << "\n";
// >=
cout << (1 >= 1) << endl;//输出1,1大于等于1,为真
cout << (2 >= 1) << endl;//输出1,2大于等于1,为真
cout << "\n";
// <=
cout << (1 <= 1) << endl;//输出1,1小于等于1,为真
cout << (2 <= 1) << endl;//输出0,2大于等于1,为假
return 0;
}
三、位运算符
1. 与运算符
& ➡️若左边的值与右边的值对应的比特位都为1则结果也为1,否则为0
#include <iostream>
using namespace std;
int main() {
// &
int a = 1;
int b = 2;
cout << (a & b) << endl;//输出a & b的结果,为1
return 0;
}
0 & 0 = 0
1 & 0 = 0
0 & 1 = 0
1 & 1 = 1
2.与运算符
| ➡️ 若左边的值与右边的值对应的比特位中有一位为1则结果也为1,否则为0
#include <iostream>
using namespace std;
int main() {
// |
int a = 1;
int b = 2;
cout << (a | b) << endl;//输出a | b的结果,为3
return 0;
}
0 & 0 = 0
1 & 0 = 1
0 & 1 = 1
1 & 1 = 1
3. 异或运算符
^ ➡️ 若左边的值与右边的值对应的比特位中有一位为1则结果为1,全为1和全为0则结果为0
#include <iostream>
using namespace std;
int main() {
// ^
int a = 5;
int b = 6;
cout << (a ^ b) << endl;//输出a ^ b的结果,为3
return 0;
}
0 & 0 = 0
1 & 0 = 1
0 & 1 = 1
1 & 1 = 0
4. 取反运算符
~ ➡️将一个值的二进制位按位取反,0变为1,1变为0
正数取反
#include <iostream>
using namespace std;
int main() {
// ~
int a = 5;
cout << (~a) << endl;//输出~a的结果,为-6
return 0;
}
tips:
正数的原码、反码、补码都相同
负数的原码是自己本身,反码是原码取反符号位不变,补码是反码加1
负数取反
#include <iostream>
using namespace std;
int main() {
// ~
int a = -6;
cout << (~a) << endl;//输出~a的结果,为5
return 0;
}
5. 左移、右移运算符
<< ➡️ 将一个数的二进制位向左移动n位,右边补n个0,左边去掉n位
>> ➡️ 将一个数的二进制位向右移动n位,正数左边补n个0,负数左边补n个1,右边去掉n位
以上均在补码的情况下完成
#include <iostream>
using namespace std;
int main() {
// <<
int a = 1;
cout << (a << 1) << endl;//输出a左移1位的结果,为2
a = -1;
cout << (a << 1) << endl;//输出a左移1位的结果,为-2
cout << "\n";
// >>
a = 1;
cout << (a >> 1) << endl;//输出a右移1位的结果,为0
a = -1;
cout << (a >> 1) << endl;//输出a右移1位的结果,为-1
return 0;
}
四、赋值运算符
#include <iostream>
using namespace std;
int main() {
// =
int a = 10;
// +=
a += 10; //a = a + 10;
cout << a << endl;
// -=
a = 10;
a -= 2; //a = a - 2;
cout << a << endl;
// *=
a = 10;
a *= 2;//a = a * 2;
cout << a << endl;
// /=
a = 10;
a /= 2;//a = a / 2;
cout << a << endl;
// %=
a = 10;
a %= 2; //a = a % 2;
cout << a << endl;
return 0;
}
#include <iostream>
using namespace std;
int main() {
// &=
int a = 5;
a &= 6;// a = a & 6
cout << a << endl;
// |=
a = 5;
a |= 6;// a = a | 6
cout << a << endl;
// ^=
a = 5;
a ^= 6;// a = a ^ 6
cout << a << endl;
// <<=
a = 5;
a <<= 6;// a = a << 5
cout << a << endl;
// >>=
a = 5;
a >>= 6;//a = a >> 6;
cout << a << endl;
return 0;
}
五、逻辑运算符
逻辑与 && ➡️ 若左值与右值同时为真,则结果为真,否则为假
逻辑或 || ➡️ 若左值与右值有一个为真,则结果为真,否则为假
逻辑非 ! ➡️ 若右值为真,则结果为假,否则为真
#include <iostream>
using namespace std;
int main() {
// &&
cout << (1 && 2) << endl;//1与2都是非0的数,结果为真
cout << (0 && 2) << endl;//0为假,2为真,不同时为真,结果为假
cout << "\n";
// ||
cout << (1 || 2) << endl;//1与2都是非0的数,结果为真
cout << (0 || 2) << endl;//0为假,2为真,有一个为真,结果为真
cout << (0 || 0) << endl;//左右均为0,结果为假
cout << "\n";
// !
cout << !1 << endl;//1为真,输出相反的结果,假
cout << !0 << endl;//0为假,输出相反的结果,真
return 0;
}
总结
下期预告:程序流程结构