目录
3.1运算符
3.1.1 算术运算符——加减乘除+-*/
#include<iostream>
using namespace std;
int main() {
int a1 = 10;
int b1 = 3;
cout << a1 + b1 << endl;
cout << a1 - b1 << endl;
cout << a1 * b1 << endl;
cout << a1 / b1 << endl;//两个整数相除,结果依然是整数,将小数部分除去
int a2 = 10;
int b2 = 20;
cout << a2 / b2 << endl;
int a3 = 10;
int b3 = 0;
//cout << a3 / b3 << endl; //除数不能为0
//两个小数可以相除
double d1 = 0.5;
double d2 = 0.25;
cout << d1 / d2 << endl;//运算结果也可以是小数
}
3.1.2 算术运算符——取模%
#include<iostream>
using namespace std;
int main() {
//只有整数可以进行取余运算
//取模运算本质,就是求余数
int a1 = 10;
int b1=3;
cout << a1 %b1 << endl;
int a2 = 10;
int b2 = 20;
cout << a2 % b2 << endl;
//基于除法运算,所以也做不了取余运算
int a3 = 10;
int b3 = 0;
//cout << a3 % b3 << endl;
//两个小数是不可以做取余运算的
double d1 = 3.14;
double d2 = 1.1;
//cout << d1 % d2 << endl;
return 0;
}
3.1.3 算术运算符——前后置递增运算i++ ++i
#include<iostream>
using namespace std;
int main() {
//1、前置递增
int a = 10;
++a;
cout << "a=" << a << endl;//11
//2、后置递增
int b = 10;
b++;
cout << "b=" << b << endl;//10
//3、前置和后置的区别
//前置递增 先让变量+1 然后进行表达式运算
int a2 = 10;
int b2 = ++a2 * 10;
cout << "a2=" <<a2<< endl;//11
cout << "b2=" <<b2<< endl;//110
//后置递增 先进性表达式运算,后让变量+1
int a3 = 10;
int b3 = a3++ * 10;
cout << "a3=" << a3 << endl;//11
cout << "b3=" << b3 << endl;//100
return 0;
}
3.1.4 赋值运算符
#include<iostream>
using namespace std;
int main() {
//赋值运算符
// =
int a = 10;
a = 100;
cout << "a=" << a << endl;//100
// +=
a = 10;
a += 2;
cout << "a=" << a << endl;//12
// -=
a = 10;
a -=2;
cout << "a=" << a << endl;//8
// *=
a = 10;
a *= 2;
cout << "a=" << a << endl;//20
// /=
a = 10;
a /= 2;
cout << "a=" << a << endl;//5
// %=
a = 10;
a %= 2;
cout << "a=" << a << endl;//0
return 0;
}
3.1.5 关系运算符——比较
#include<iostream>
using namespace std;
int main() {
//比较运算符
// ==
int a = 10;
int b = 20;
cout << (a==b) << endl;//0
// !=
cout << (a != b) << endl;//1
// >
cout << (a > b) << endl;//0
// <
cout << (a < b) << endl;//1
// >=
cout << (a >= b) << endl;//0
// <=
cout << (a <= b) << endl;//1
return 0;
}
3.1.6 逻辑运算符! && ||
非0即为真,记住这句话。
#include<iostream>
using namespace std;
int main() {
//01 逻辑运算符 非 !
int a =10;
// 在C++中 除了0,都为真
cout << !a << endl;//0
cout << !!a << endl;//1
//02 逻辑运算符 与 && 同真为真,其余为假
int a1 = 10;
int b1 = 10;
cout << (a1&&b1)<< endl;//1
a1 = 0;
b1 = 10;
cout << (a1&&b1)<< endl;//0
a1 = 0;
b1 = 0;
cout << (a1&&b1)<< endl;//0
//03 逻辑运算符 或 || 同假为假,其余为真
int a2 = 10;
int b2 = 10;
cout << (a2||b2) << endl;//1
a2 = 0;
b2 = 10;
cout << (a2||b2) << endl;//1
a2 = 0;
b2 = 0;
cout << (a2||b2) << endl;//0
return 0;
}
3.1.7 位运算符——&|^~
- 与&
(12)10&(8)10=(8)10
- 或|
(4)10&(8)10=(12)10
- 异或^:若两个操作数对象同一位时为1,则结果对应位为1;否则为0。
(31)10&(22)10=(31)10
- 取反~
3.1.8 移位运算符——<< >>
例1:左移运算
#include<iostream>
using namespace std; //命名空间
int main() { //主函数
int a = 0x40, b;
b = a << 1;
cout << b << endl;//128
return 0;
}
例2:使用移位运算
#include<iostream>
#include<stdio.h>
using namespace std; //命名空间
int main() { //主函数
long nWord = 0x12345678;
int nBits;
nBits = nWord & 0xFFFF;
printf("low bits are 0x%x\n", nBits);//low bits are 0x5678
nBits = (nWord & 0xFFFF0000) >> 16;
printf("hight bits are 0x%x\n", nBits);//hight bits are 0x1234
return 0;
}
3.2结合性和优先级
3.3表达式
实例3.3.1:逗号运算符的应用
#include<iostream>
using namespace std; //命名空间
int main() { //主函数
int a = 4, b = 6, c = 8, res1, res2;
res1 = a, res2 = b + c;
for (int i = 0, j = 0; j < 2; j++) {
printf("y=%d,x=%d\n", res1, res2);
}
//y=4,x=14
//y=4,x=14
return 0;
}
实例3.3.2:隐式类型转换
#include<iostream>
using namespace std; //命名空间
int main() { //主函数
double result;
char a = 'k';//ASCII码表,k对应107
int b = 10;
float e = 1.515;
result = (a + b) / e;//117/1.515
printf("%f\n", result); //77.227722
return 0;
}
实例3.3.3:强制类型转换应用
#include<iostream>
using namespace std; //命名空间
int main() { //主函数
float i, j;
int k;
i = 60.25;
j = 20.5;
k = (int)i + (int)j;
cout << k << endl;//80
return 0;
}
实例3.3.4:复合赋值运算符的应用
#include<iostream>
using namespace std; //命名空间
int main() { //主函数
int a = 10;
//运算符的优先级关系:-的优先级较高,+=,*=,/=的优先级相等,较低,而且是右结合
//等效语句如下:a=a/(a-6) a=a*a a=a+a
a += a *= a /= a - 6;
//a=10/(10-6)=10/4=2.5( 需要向下取整得到2)
//a = a * a = 2 * 2 = 4
//a = a + a = 4 + 4 = 8
cout << a << endl;//8
return 0;
}
实例3.3.5:不借助第3个变量交换两个变量的值
法一:
#include<iostream>
using namespace std; //命名空间
int main() { //主函数
int a = 1, b = 2;
a = a + b;
b = a - b;
a = a - b;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
return 0;
}
法二:
#include<iostream>
using namespace std;
int main()
{
int a, b;
cout << "inPut a and b:" << endl;
cin >> a >> b;
cout << "a:" << a << endl;
cout << "b:" << b << endl;
if (a > b)
{
b = a - b;
a = a - b;
b = a + b;
}
cout << "a:" << a << endl;
cout << "b:" << b << endl;
return 0;
}
世间安得双全法,不负如来不负卿!