C++中有多個常被用在循環中的運算符,因此我們花一點時間來討論它們。前面已經介紹了兩個這樣的運算符:遞增運算符(++)(名稱C++由此得到)和遞減運算符(--)。這兩個運算符執行兩種及其常見的循環操作:將循環計數加1或減1。然而,它們還有很多特點不爲讀者所知。這兩個運算符都有兩種變體。前綴版本位於操作數前面,如++x;後綴版本位於操作數後面,如x--。
兩個版本對操作數的影響是一樣的,但是影響的時間不同。這就像對於錢包來說,清理草坪之前付錢和清理草坪之後付錢的最終結果是一樣的,但支付錢的時間不同。下列程序演示遞增運算符的這兩種差別。
//plus_one.cpp —— the increment
#include<iostream>
int main()
{
using namespace std;
int a=20;
int b=20;
cout<<"a = "<<a<<": b= "<<b<<endl;
cout<<"a++ = "<<a++<<": ++b = "<<++b<<endl;
cout<<"a = "<<a<<": b = "<<b<<endl;
return 0;
}
下面是該程序的輸出:
粗略的將,a++意味着使用a的當前值計算表達式,然後將a的值加1;而++b的意思是先將b的值加1,然後使用新的值來計算表達式。例如,我們有下面這樣的關係:
int x=5;
int y = ++x;//y = 6,x = 6
int z= 5;
int y=z++;//y = 5,z=6
遞增和遞減運算符是處理將值加減1這種常見任務的一種簡約、方便的方法。
遞增運算符和遞減運算符都是漂亮的小型運算符,不過千萬不要失去控制,在同一條語句對同一個值遞增或遞減多次。問題在於,規則“使用後修改”和“修改後使用”可能會變得模糊不清。也就是說,下面這條語句在不同的系統上將生成不同的結果:
x=2*x++*(3- ++x);//在自己的電腦上輸出下看看哦,答案用於都是要以實踐爲基礎的呢
對這種語句,C++沒有定義正確的行爲。