小注意点:
- wcha_t 类型为宽字符类型,能存储较大的字符,相应io需要使用 wcin 和 wcout。
- unsigned char 和 signed char 的区别在于能存储字符编码的范围不同,无符号char类型可以存储0-255。
-
cout.setf(ios.base::boolalpha);
这条语句的效果是显示判断语句的返回值为布尔值。 - new 和 delete 应当一起使用来避免内存泄漏。
- x = 100 、x ++ 等是判定表达式,具有返回值。
for (int i=0;i;i++) // 在循环结束后变量 i 会消失。
- a++使用原值,++a使用增加后的值。
- While递增小技巧:
while (a++ < 10)
cout << a << endl;
// 这确保了先比较 a<10 ,再对 a 进行递增。
- 可以将递增运算符用于指针。
double arr[5] {1.2, 37.2, 8.1, 3.9, 0.4};
double *pr = arr;
pr++;
{int x;} // 定义变量的生存周期为它外面一层花括号
- EOF不是有效的字符编码(-1),很多系统的char类型是无符号的,所以测试EOF时需要将返回值赋给 int 变量,而不是 char 变量。
- 在输入后用 if 语句判断 cin 输入异常可以用于跳出:
if (!cin){ // 如果上面的输入非法,则执行下面的代码块
cin.clear(); // 重置输入,删除错误
}
cin.get();
副作用和顺序点:
副作用指的是计算表达式时对某些东西,比如存储在变量中的值进行了修改。
顺序点是程序执行过程中的一个点,在这个点处,进入下一步之前讲确保对所有的副作用都进行了评估。C++中,所有的分号就是一个顺序点。
y = (4 + x++) + (6 + x++)
这个表达式中,无法保证x++是在何处进行。
字符串的比较:
字符数组:
C++中字符串代表着存储这一字符串的地址,所以不能直接比较。应当使用<cstring>中的 strcmp() 函数。相同返回零,第一个字符串排在第二个之前则返回负,否则返回正。
关系运算符可以用来比较字符。
srting类比较:
可以用关系字符串来进行比较,因为类函数重载了这些运算符。
基于范围的 for 循环(C++11):
用于遍历数组或容器类,对其中的元素执行相同的操作。
vector<int> prices (5) = {1, 2, 3, 4, 5}
for (int x : prices)
cout << x << endl;
for (int &x : prices)
x += 1; // &x是引用变量,这样可以修改x
网友评论