【C++ Primer 第五版】逗号运算符

含有两个运算对象,按照从左向右的顺序依次求值
逗号运算符真正的结果是右侧表达式的值
逗号运算符常常被用在for循环中

vector<int>::size_type cnt = ivec.size()
// 将把从size到1的值赋给ivec的元素
for(vector<int>::size_type ix = 0; ix != ivec.size(); ++ix, --cnt){
    ivec[ix] = cnt;
}

练习:

  • 4.31 前置和后置的递增运算符

后置的递增运算符是为了保留递增之前的原始值,而这与该程序的设计初衷是不同的,会造成资源的浪费,如果没有特殊需求,尽量使用前置的递增运算符

  • 4.32 解释下面的这个循环的含义
constexpr int size = 5; // constexpr 变量必须在编译时进行初始化
int ia[size] = {1,2,3,4,5}; // 初始化数组
for (int *ptr = ia, ix = 0; ix != size && ptr != ia+size; ++ix, ++ptr){/*...*/}

定义指向数组的指针*ptr,整型变量x
通过循环遍历数组

  • 4.33 说明下面表达式的含义

someValue ? ++x, ++y : --x, --y

int main(){
    int someValue = 0, expr1, expr2, x=0, y=0;
    expr1 = someValue ? ++x, ++y : --x, --y;
    cout << "expr1=" << expr1 << " x=" << x << " y=" << y << endl;;
    someValue = 1;
    expr2 = someValue ? ++x, ++y : --x, --y;
    cout << "expr2=" << expr2 << " x=" << x << " y=" << y << endl;;
}

输出结果为

expr1=4 x=4 y=9
expr2=10 x=5 y=9

当someValue为0时,进行--x操作,x=5-1=4,表达式返回x递减之后的值,expr1 = 4,之后再进行--y操作(逗号运算符优先级最低),y=10-1=9

当someValue为1时,进行++x, ++y操作,x=4+1=5,y=9+1=10,表达式返回右侧表达式y递增之后的值,expr2 = 10,之后再进行--y操作(逗号运算符优先级最低),y=10-1=9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值