五、自增自減運算符
這是一類特殊的運算符,自增運算符++和自減運算符--對變量的操作結(jié)果是增加1和減少1。例如:
--Couter;
Couter--;
++Amount;
Amount++;
看這些例子里,運算符在前面還是在后面對本身的影響都是一樣的,都是加1或者減1,但是當把他們作為其他表達式的一部分,兩者就有區(qū)別了。運算符放在變量前面,那么在運算之前,變量先完成自增或自減運算;如果運算符放在后面,那么自增自減運算是在變量參加表達式的運算后再運算。這樣講可能不太清楚,看下面的例子:
num1=4;
num2=8;
a=++num1;
b=num2++;
a=++num1;這總的來看是一個賦值,把++num1的值賦給a,因為自增運算符在變量的前面,所以num1先自增加1變?yōu)?,然后賦值給a,最終a也為5。b=num2++;這是把num2++的值賦給b,因為自增運算符在變量的后面,所以先把num2賦值給b,b應該為8,然后num2自增加1變?yōu)?。
那么如果出現(xiàn)這樣的情況我們怎么處理呢?
c=num1+++num2;
到底是c=(num1++)+num2;還是c=num1+(++num2);這要根據(jù)編譯器來決定,不同的編譯器可能有不同的結(jié)果。所以我們在以后的編程當中,應該盡量避免出現(xiàn)上面復雜的情況。
六、復合賦值運算符
在賦值運算符當中,還有一類C/C++獨有的復合賦值運算符。它們實際上是一種縮寫形式,使得對變量的改變更為簡潔。
Total=Total+3;
乍一看這行代碼,似乎有問題,這是不可能成立的。其實還是老樣子,'='是賦值不是等于。它的意思是本身的值加3,然后在賦值給本身。為了簡化,上面的代碼也可以寫成:
Total+=3;
復合賦值運算符有下列這些:
符號 功能
+= 加法賦值
-= 減法賦值
*= 乘法賦值
/= 除法賦值
%= 模運算賦值
<<= 左移賦值
>>= 右移賦值
&= 位邏輯與賦值
|= 位邏輯或賦值
^= 位邏輯異或賦值
上面的十個復合賦值運算符中,后面五個我們到以后位運算時再說明。
那么看了上面的復合賦值運算符,有人就會問,到底Total=Total+3;與Total+=3;有沒有區(qū)別?答案是有的,對于A=A+1,表達式A被計算了兩次,對于復合運算符A+=1,表達式A僅計算了一次。一般的來說,這種區(qū)別對于程序的運行沒有多大影響,但是當表達式作為函數(shù)的返回值時,函數(shù)就被調(diào)用了兩次(以后再說明),而且如果使用普通的賦值運算符,也會加大程序的開銷,使效率降低。
相關(guān)推薦:計算機等級考試二級C語言教程匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |