版权声明:自由转载-非商用-非衍生-保持署名 | 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.