在C和C++中,常用的表達式中使用自增和自減運算符,他們的作用都是使變量的值增1或減1,如:
++i(在使用i之前,先使i的值加1,如果i的原值爲3,則執行j=++i後,j的值爲2)
--i(在使用i之前,先使i的值減1,如果i的原值爲3,則執行j=--i後,j的值爲4)
i++(在使用i之後,i的值加1,如果i的原值爲3,則執行j=i++後,j的值爲3,i的值變爲4)
i--(在使用i之後,i的值減1,如果i的原值爲3,則執行j=i--後,j的值爲3,i的值變爲2)
注:①自增自減運算符只能用於變量,而不能用於常亮或表達式,如6++或(a+b)++都是不合法的。
②++和--的結合方向,前置的++和--的結合方向是自右向左的,後置的++和--的結合方向是自左向右的,並且後置的++和--運算符的優先級略高於前置的++和--,而且他們的優先級只低於::()[]->.這些運算符。
③自增自減運算符使用靈活,在很多情況可能出現歧義,如:
int i=3;
cout<<i++<<" , "<<i++<<endl;
請問應該輸出什麼?很多人都會認爲是3,4。而實際輸出的是4,3。因爲許多編譯器系統在處理輸出流時,先按自右向左的順序對個輸出項求值。
下面幾個例題大家自己回去思考下哪些是對的,對的話i的值是多少:
1、+i++
2、(+i)++
3、(++i)++
4、(i++)++