++是自增運算子,是單目運算子,其作用是使單個變數的值增1。它有兩種使用情況:
1)前置:++i,先執行i=i+1,再使用i值;
2)後置:i++,先使用i值,再執行i=i+1。
例如:j=3;k=++j;
執行「k=++j」語句後,k=4,j=4。上述語句等效為:
j=3;j=j+1; k=j;
再如:j=3;k=j++;
執行「k=j++」語句後,k=3,j=4。上述語句等效為:
j=3;k=j; j=j+1;
--是自減運算子,是單目運算子,其作用是使單個變數的值減1。它有兩種使用情況:
1)前置:--i,先執行i=i-1,再使用i值;
2)後置:i--,先使用i值,再執行i=i-1。
例如:j=3;k=--j;
執行「k=--j」語句後,k=2,j=2。上述語句等效為:
j=3;j=j-1; k=j;
再如:j=3;k=j--;
執行「k=j--」語句後,k=3,j=2。上述語句等效為:
j=3;k=j; j=j-1;
注意:1)自增和自減運算子,只能用於變數,不能用於常量和表示式。例如5++,--(a+b)等都是非法的。
2)表示式k=-i++等效於k=(-i)++還是k=-(i++)因為負號運算子和自增運算子優先順序相同,哪乙個
正確就得看結合方向。自增、自減運算子及負號運算子的結合方向是從右向左。因此,上式等效於
k=-(i++);若i=5,則表示式k=-i++運算之後k的值為-5,i的值為6。此賦值表示式的值即為所賦的
值-5。不要因為k=-i++等效於k=-(i++)就先做「++」運算!這裡採用的是「先用後變」,即先拿出i
的值做負號「-」運算,把這個值賦給變數k之後變數i才自增。
3)c語言允許在乙個表示式中使用乙個以上的賦值類運算,包括賦值運算子、自增運算子、自減運
算符等。這種靈活性使程式簡潔,但同時也會引起***。這種***主要表現在:使程式費解,
並易於發生誤解或錯誤。
main( )
{int i,j;
i=3;
j=(i++)+(i++)+(i++);
printf(「\nj=%d,」j);
i=3;
printf(「j=%d」,(i++)+(i++)+(i++));}
在tc3.0上執行,其結果則是:j=9,j=12,究其原因,「先用後變,先變後用「中的「先」和「後」是乙個模糊的概念,很難給出順序或時間上的準確定論。「先」到什麼時候,「後」到什麼程度?沒有此方面的詳細資料可供查詢。克服這類***的方法是,盡量把程式寫得易懂一些,即將費解處分解成若干個語句。如:k=i+++j:可寫成k=i+j:i++:而類似(i++)+(i++)+(i++)這類連續自增、自減的運算最好不要使用,以避免疑團的出現,同時也可減少程式出錯的可效能。
因此,在c程式設計中,要慎重使用自增、自減運算子,特別是在乙個表示式中不要多處出現變數的自增、自減等運算。
C C 語言中的自增(自減)運算子
1.為什麼會出現自增運算子?原因 1 可以使 更加簡練。但是,這也會使 的可讀性變差。例如 include void main 2 自增運算子可以使自增運算更加高效。語句i i 1 將會涉及記憶體訪問操作,而i 可以再暫存器中進行,後者的效率當然會比前者高,尤其涉及到迴圈使更是如此。當然這也會帶來一...
自增和自減運算子
自增和自減運算子 在c語言中有許多運算子,邏輯運算,賦值運算,關係運算 其中最難理解的莫過於自增 和自減 運算了。自增 自減 有兩種方式,下面分別進行分析。1 在前。i i 其用法是在整個表示式運算之前先進行自增 自減 運算,然後再進行表示式運算。例如進行如下計算 intx y x 8 y x 執行...
自增和自減運算子
c語言提供自增運算子 和自減運算子 這兩個運算子在c語言程式設計中大量使用,而且使用非常靈活,需要重點理解。首先,我們來總結這兩個運算子使用的規則 1 自增運算子 是對變數的值增加1 2 自減運算子 是對變數的值減掉1 3 參與自增運算子的變數,可以在前和在後,例如有變數 int i 可以有i 和 ...