版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 4.0
赋值操作
赋值的左操作数必须是非const左值:
1  | int i, j, val;  | 
右结合性
1  | int val1, val2;  | 
上述语句将 val2 赋给 val1.但下面是错误的
1  | int val, *p;  | 
上面: p=0 成立,但 val = p 出错。
复合赋值操作符
| 说明 | 操作符 | 
|---|---|
| 算术操作符 | += -= *= /= %= | 
| 位操作符 | <<= >>= &= ^= |= | 
使用方法
1  | a op= b; //op表示操作符  | 
等价于
1  | a = a op b;  | 
自增自减
1  | int i = 0, j;  | 
组合使用解引用和自增
1  | vector<int>::iterator iter = ivec.begin();  | 
自增的优先级高于解引用,即相当于 *(iter++)。
箭头操作符
C++为包含 点操作 和 解引用 的表达式提供 箭头操作符。
1  | Item *p = &item1;  | 
1,2 等价。
举例
编写程序:定义vector对象,其每个元素指向string类型的指针;输出每个元素的内容及长度。
1  | string s;  | 
测试结果
1  | hello↙  | 
条件操作符
1  | cond ? expr1 : expr2;  | 
先计算 cond 的值,如果为true,则计算 expr1,否则计算 expr2。可以嵌套使用,如:求三个数的最大值
1  | int max = i > j  | 
但并不推荐这样做,可以换成下列代码:
1  | int max = i;  | 
输出表达式中使用条件操作符
1  | cout << (i<j?i:j) <<endl; //ok  | 
第二句相当于
1  | cout << (i<j); //打印1或0,然后返回cout对象  | 
sizeof操作符
返回一个对象或类型名的长度
1  | sizeof(type_name);  | 
- 对char类型或char类型值做sizeof结果为1;
 - 对指针,返回存放该指针所需的内存;若需要获得指针所指内容,需要解引用操作;
 - 对数组,等价于对数组元素做sizeof再乘以元素的个数;
 
逗号操作符
是一组由逗号分隔的表达式,这些表达式从左至右计算,结果是其最右边的表达式值
1  | int cnt = vec.size();  | 
每次循环,ix自增1,cnt自减1.
END.