1, 文件结束标志
windows(ctr + z)
linux/Unix(ctr + d)
2, 如果两个以上字符串字面量仅仅被空白符分隔开,那么这些字符字面量就会被自动连接到一起。
eg.
cout << "Enter all your grade ,"
<<"followed by end-of-file: ";
等价于:
cout << "Enter all your grade ,followed by end-of-file:"
*好处:对于一些过长的程序,对它们的阅读会非常的不方便,将字符串字面量分成两部分之后,就可以避免出现这种情况。
3, 未初始化
- 如果不讲变量指定初始值,那就要隐含地依赖初始化
- 默认初始化操作取决于变量的类型
- 自定义类型的对象,如果没有给它们指定一个初始化程序,类就会自己指定一个
- 不明确的初始化一个字符串,字符串就会被隐含地初始化为空
- 对于内部类型的局部变量,则没有这样隐含初始化,意味着:变量未定义的话,创建变量的时,就会给这些变量分配适当的内存单元,而变量的值则是有这些单元中的随机信息组成的。【往往非常多的操环境会允许对未定义变量(经常会是一个对类型无效的值)的访问,冲突和错误结果的几率就会非常高】
4, 如果希望保持系统环境的独立性,就不能直接编写恰当的类型(因为不同的环境使用不同的类型表示长度),我们应该养成使用库定义的size_type表示容器的长度的良好编程习题————命名size类型时。
5, 非递减 != 递增,
因为某些元素可能会与其他元素相等。
6, 每当普通整数和无符号整数在表达式结合在一起时,普通整数就要被转换为无符号整数。
- eg,homeword.size()-100 这表达式的结果是无符号类型的,意味着结果不能小于0————即使homeword.size()< 100
7, 定义输出长度
- 类型streamsize,表示输入/输出库的长度,头文件<ios>
- 控制器 setprecision,作用:指明输出所包含的有效位数,头文件<iomanip>
- cout.precision(),作用:进行输出时所使用的精度
- eg,
-
streamsize pre = cout.precision(); cout << setprecision(3)<< 3.1415926 << setprecision(pre) << endl;
8,C++标准的对库的执行性能要求非常高,库不仅要符合行为方面的规定,还要达到规范化的性能目标。C++是被设计为特别注重性能的应用服务的,同时在库中也大量的体现了对速度的要求。
所有符合C++系统环境都必须:
- 以vector后面添加大量元素时,其性能不会随着元素个数的增加而成比例地恶化;
- 以不低于nlog(n)的速度(运行时间小于nlog(n))实现排序算法,在这里,n是待排序的元素个数。