C++Primer学习笔记12.10

65 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情

3.5.6 多维数组

要使用范围for语句处理多为数组,除了最内层的循环外,其他所有循环的控制变量都应该是和引用类型。

for (auto &row : ia)
    for (auto col : row)
        cout << col <<endl;

如果row不使用引用类型,编译器初始化row是,会自动将这些数组形式的元素转换成指向该数组内首元素的指针。如此,row就是int *,显然内层的循环就不合法了。

4 表达式

4.1 基础

当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。左值:内容;右值:内存位置

4.2 算术运算符

一元负号运算符bool b2 = -b; //b2是true!

运算符%俗称“取余”或“取模”运算符。其中参与取余运算的运算对象必须是整数类型

C++早期版本允许m%n的符号匹配n的符号,而且商向负无穷一侧取整。

在C++11新标准中已经被禁止使用了,除了-m导致溢出的特殊情况,其他时候(-m)/n和m/(-n)都等于-(m/n),m%(-n)等于m%n,(-m)%n等于-(m%n)

4.3 逻辑和关系运算符

**注意:**进行比较运算时除非比较的对象时布尔类型,否则不要使用布尔字面值true和false作为运算对象

4.5 递增和递减运算符

**注意:前置版本的递增运算符避免了不必要的工作,它把值加1后直接返回改变了的运算对象。而后置版本需要将原始值存储下来以便于返回这个未修改的内容。**如果我们不需要修改前的值,那么后置版本就是一种浪费 所以除非特殊要求我们都应当使用前置运算符