C++中的运算符总结(2)

C++中的运算符总结(2)

5、前缀还是后缀

首先需要理解前缀和后缀之间的差别,这样才能选择合适的方式。使用后缀运算符时,先将右值赋给左值,再将右值递增或递减。这意味着在上述所有使用后缀运算符的代码中, num2 都为 num1 的旧值(执行递增或递减前的值)。
前缀运算符的行为完全相反,即先将右值递增或递减,再将结果赋给左值。在所有使用后缀运算符的代码中, num2 的值都与 num1 的值相同。以下程序演示了将前缀和后缀递增和递减运算符用于一个 int 变量的结果:

#include 
using namespace std;

int main()
{
    int startValue = 101;
    cout << "Start value of integer being operated: " << startValue << endl;

    int postfixIncrement = startValue++;
    cout << "Result of Postfix Increment = " << postfixIncrement << endl;
    cout << "After Postfix Increment, startValue = " << startValue << endl;

    startValue = 101; // Reset 
    int prefixIncrement = ++startValue;
    cout << "Result of Prefix Increment = " << prefixIncrement << endl;
    cout << "After Prefix Increment, startValue = " << startValue << endl;

    startValue = 101;
    int postfixDecrement = startValue--;
    cout << "Result of Postfix Decrement = " << postfixDecrement << endl;
    cout << "After Postfix Decrement, startValue = " << startValue << endl;

    startValue = 101;
    int prefixDecrement = --startValue;
    cout << "Result of Prefix Decrement = " << prefixDecrement << endl;
    cout << "After Prefix Decrement, startValue = " << startValue << endl;

    return 0;
}

输出:

Start value of integer being operated: 101
Result of Postfix Increment = 101
After Postfix Increment, startValue = 102
Result of Prefix Increment = 102
After Prefix Increment, startValue = 102
Result of Postfix Decrement = 101
After Postfix Decrement, startValue = 100
Result of Prefix Decrement = 100
After Prefix Decrement, startValue = 100

分析:

结果表明,后缀运算符和前缀运算符的差别在于:在第 8 和 18 行,被赋值的左值包含执行递增或递减运算前的值。另一方面,在第 13 和 23 行,左值包含执行递增或递减运算后的值。这是最重要的差别,选择合适的运算符时必须牢记这一点。
在下面的语句中,使用前缀还是后缀运算符对结果没有影响:

startValue++; // Is the same as…
++startValue;

这是因为没有将原来的值赋给其他变量,这两种情形的最终结果都是将 startValue 递增。

注意:

您经常会听到前缀运算符的性能更高还是后缀运算符性能更高的争论。换句话说,++startValue 优于 startValue++。
至少从理论上说确实如此,因为使用后缀运算符时,编译器需要临时存储初始值,以防需要将其赋给其他变量。就整型变量而言,这对性能的影响几乎可以忽略不计,但对某些类来说,这种争论也许有意义。聪明的编译器可能通过优化消除这种差异。

6、相等运算符( ==)和不等运算符( !=)

经常需要在执行操作前检查条件是否满足,相等运算符( ==,操作数相等)和不等运算符( !=,操作数不相等)可帮助您完成这种检查。
相等性检查的结果为布尔值,即 true 或 false:

int personAge = 20;
bool checkEquality = (personAge == 20); // true
bool checkInequality = (personAge != 100); // true

bool checkEqualityAgain = (personAge == 200); // false
bool checkInequalityAgain = (personAge != 20); // false

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器

你可能感兴趣的:(C++编程基础,c++)