i++與++i是什么意思?


自增(++),自減(--)運算符

譚浩強的書是這樣描述的:

自增(++)自減(--)運算符的作用是使變量的值加1或者減1,例如:

++i,--i(在使用i之前,先使i的值加(減)1)

i++,--i(在使用i之后,使i的值加(減)1)

粗略的看,++i和i++的作用相當於i=i+1。但++i和i++的不同之處在於:++i是先執行i=i+1,再使用i的值;而i++是先使用i的值,再執行i=i+1。如果i的原值等於3,請分析下面的賦值語句。

①j=++i;(i的值先變為4,再賦值給j,j的值為4)

②j=i++;(現將i的值3賦給j,j的值為3,然后i變為4)

又例如

i=3

printf(“%d”,++i);

輸入為4,若改為

printf(“%d”,i++)

則輸出為3。

自增自減運算符常用於循環語句中,使循環變量自動加1;也用於指針變量,使指針指向下一個地址。

有些專業人士在使用++和--時喜歡運用一些技巧,但是往往會出現一些意想不到的結果,例如i+++j,是理解為(i++)+j還是i+(++j)呢?程序應當清晰易讀,不容易引起歧義。建議謹慎使用++與--運算符,只運用最簡單的形式i++與i--。而且把他們作為單獨的表達式,而不要在一個復雜的表達式中使用++與--運算符

總結:

i++ 即后加加,原理是:先自增,然后返回自增之前的值
++i 即前加加,原理是:先自增,然后返回自增之后的值

(都是先自增,然后反回值)
一個變量也是表達式,多個表達式的加減法運算都是從左到右進行的
真實編程中,我們不會寫這些復雜的i++代碼,但是在考試,筆試中可能有關於i++的用法不同判斷

下面舉一個例子:

#include <stdio.h>
int main() {
	int n=9,a;
	while (n>6) {
		a=n--;
		printf("%d\t",n);
		printf("%d\n",a);

	}

	return 0;
}

我們發現n--后,n先減1,然后返回自增之前的值。

這時自增前的值就賦給a

再舉個例子:

#include <stdio.h>
int main() {
	int n=9;
	while (n>6) {
		printf("%d\n",n--);
	}
	printf("\n");
	int m=9;
	while (m>6) {
		printf("%d\n",--m);
	}
}

有什么不足的地方歡迎各位大佬指正

操作系統:Windows10

軟件:Devc++

編譯器:TDM-GCC 4.9.2 64-bit Release


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM