C++ Primer Plus 第五章 循环和关系表达式
1.对于++运算符,虽然使用前缀格式和后缀格式对程序的行为没有任何影响,但是执行速度可能有细微的差别。c++允许针对类定义这些运算符(运算符重载),在这种情况下,用户这样定义前缀函数:将值加1,返回结果;但是后缀版本首先复制一个副本,将其加1,然后将复制的副本返回。因此,前缀版本的效率要比后缀版本的效率高。
2.对于y = (4 + x++) + (6 + x++);的结果是不确定的,因为c++只保证程序执行到下一条语句之前x的值会被递增两次,在什么时刻递增是不清楚的,因此在编程时需要避免这样的语句。
3.优先级: 前缀递增 = 前缀递减 = * < 后缀递增 = 后缀递减(注意,优先级相同时,从右向左结合)
4.关于逗号运算符,最常见的用途就是将两个或更多的表达式放到一个for循环表达式中。并且c++保证是先运算完第一个表达式在运算第二个表达式。
5.关于字符串比较,如果使用的是字符数组存储,是不能使用==进行判断的,因为这个时候如果用==是判断的地址,这个时候可以使用c字符串库中的函数strcmp();如果是用的string类型,可以直接使用==进行比较,这和类的设计有关。
6.虽然创建别名有两种方法,一般使用typedef,理由如下:
7.c++没有提供二维数组类型,但是用户可以创建每个元素本身都是数组的数组。
8.文件结尾(EOF),很多操作系统都允许通过键盘来模拟文件结尾条件。win7中使用ctrl + z 来模拟。cin.fail()如果返回true说明到了文件结尾,否则说明没有到文件结尾。