關於C語言中自增和自減運算子的使用及注意事項

2021-07-24 17:43:02 字數 1462 閱讀 3204

++是自增運算子,是單目運算子,其作用是使單個變數的值增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 和 ...