前缀格式和后缀格式

1 副作用和顺序点

    首先,副作用指的是在计算机表达式时对某些东西(如存储在变量中的值)进行了修改;顺序点是程序执行过程中的一个点,在这里,进入下一步之前将确保对所有的副作用都进行了评估。在C++中,语句中的分号就是一个顺序点,这意味着程序处理下一条语句之前,赋值运算符、递增运算符和递减运算符执行的所有修改都必须完成。另外,任何完整的表达式末尾都是一个顺序点。
    何为完整表达式呢?他是这样一个表达式:不是另一个更大表达式的子表达式。完整表达式的例子有:表达式语句中的表达式部分以及用作while循环中检测条件的表达式。

2 前缀格式和后缀格式

    如果使用前缀格式或者后缀格式作用于变量,变量被用于某些目的(如用作函数参数或者给变量赋值),使用前缀格式和后缀格式的结果是不同的。然而,如果递增表达式的值没有使用,那二者结果没有区别。
    x++;
    ++x;
    这从逻辑上说,在上述情况下,使用前缀格式和后缀格式没有任何区别。表达式的值未被使用,因此只有副作用。然而,虽然选择使用前缀表达式还是后缀表达式对程序的行为没有影响,但执行速度可能有细微的差别,对于内置类型和当地的编译器而言,这看似不是什么问题。然而,C++允许您针对类定义这些运算符,在这种情况下,用户这样定义前缀函数:将值加1,然后返回结果;但后缀版本复制一个副本,将其加1,然后将复制的副本返回,因此,对于类而言,前缀版本的效率比后缀版本高。

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值