一元运算符: 取地址符号&, 解引用符号
二元运算符: 加号+ 减- 乘 除
程序的溢出
#include <iostream>
#include<string>
#include<vector>
using namespace std;
// 多维数组的遍历
int main() {
// short 的最大值
short short_val = 32767;
// 溢出
short_val += 1;
cout << short_val << endl;
return 0;
}
练习4.11
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
int i ;
while (cin >> i && i != 42)
cout << i << endl;
return 0;
}
练习 4.12
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
int a, b, c, d;
while (cin >> a >> b >> c >> d && a > b && b > c && c > d)
cout << "true" << endl;
}
++i 与 i++的区别
#include <iostream>
#include<string>
#include<vector>
using namespace std;
// ++i 和 i++的区别
int main() {
int i = 0;
int j = ++i;
cout << j << endl; // i = 1, j = 1
i = 0;
int k = i++;
cout << k << endl; // i = 1, j = 0
return 0;
}
132 i++的使用
#include <iostream>
#include<string>
#include<vector>
using namespace std;
// 连续输出直到遇到一个正数为止
int main() {
vector<int> ivec = { -1, -2, -3, -4, 1 };
auto pbeg = ivec.begin();
while (pbeg != ivec.end() && *pbeg <= 0)
cout << *pbeg++ << endl;
return 0;
}
134 条件运算符
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
// 条件运算符
int score;
cin >> score;
string finalgrade = (score < 60) ? "fail" : "pass";
cout << finalgrade << endl;
return 0;
}
4.21 练习
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
vector<int> ivec = { 1, 2 , 3, 4 };
for (auto pi = ivec.begin(); pi != ivec.end(); ++pi)
*pi % 2 == 0 ? *pi : *pi *= 2;
for (auto i : ivec)
cout << i << " " << endl;
return 0;
}
练习 4.22 条件运算符
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
int score;
cin >> score;
string finalgrade = (score > 90) ? "high pass" : (score > 75) ? "pass" : (score > 60) ? "low pass" : "failure";
cout << finalgrade << endl;
return 0;
}
145 强制类型转换 static_cast
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
int i = 3;
int j = 1;
// 强制类型转换
double slope = static_cast<double>(i) / j;
// 指针强制类型转换
double d = 3.14;
void* p = &d;
double* dp = static_cast<double*>(p);
cout << *dp << endl;
return 0;
}
145 专门用来处理const类型,const_cast
#include <iostream>
#include<string>
#include<vector>
using namespace std;
// 强制转换成const类型
int main() {
char cha = 'a';
const char* pc = &cha;
// 合法, const被拿掉了, 可以通过p写值
char* p = const_cast<char*>(pc);
*p = 'd';
cout << cha << endl; // d
const char* cp = &cha;
// 错误,q是没有const, static_cast不能够处理const
// char* q = static_cast<char*>(cp);
string s = static_cast<string>(cp);
// const_char不能处理类型
//const_char<string>(cp);
return 0;
}
147 练习4.36
#include <iostream>
#include<string>
#include<vector>
using namespace std;
// 强制转换成const类型
int main() {
int a = 1;
double d = 2.14;
a *= static_cast<int>(d);
cout << a << endl;
return 0;
}