哪位高手能我解釋一下,關於C語言的自加和自減,越詳細越好

2022-01-08 10:43:47 字數 857 閱讀 2474

1樓:

自增(自減類同,以下只以"自增"為例)運算需要留意的乙個主要關鍵點即是前自增(++i)和後自增(i++)的區別,大致說來,二者的區別如下:

1) 前自增是"先完成自增,後參與表示式運算"的;後自增卻恰恰相反,於是會產生如下區別:

int i = 0;

printf("%d", i);      // 輸出 0

printf("%d", ++i);    // 輸出 1,此句執行後 i 的值為1

printf("%d", i);      // 輸出 1

printf("%d", i++);    // 輸出 1,此句執行後 i 的值為2

printf("%d", i);      // 輸出 2

產生如上差別的原因正是:在第五行中,i 是先參與了printf語句輸出,後完成自增運算的。

2) 如果你了解如上**編譯到彙編級別後的**便會知道為何前自增與後自增會有如上差別,同時也會注意到之二者的另乙個重要差別便是前自增運算的記憶體開銷和時間開銷均要少於後自增運算,這也是為什麼在迴圈中,如果有自增運算,我們更提倡使用前自增。

不過這一點現在已經很少被提到了,一方面由於現代計算機的效能不斷提公升,多數情況下已經不需要考慮之二者這一點點差別了;另一方面,某些現代智慧型的編譯器,會在編譯時自動替你完成這個優化工作的。

2樓:汐_楓

i++,++i 減跟加意義是一樣的,只舉例加的就行了

i++ ==>呼叫i,處理完之後i=i+1;如i=4;printf("%d\n",i++);輸出的是4,可是i=5

++i ==>i=i+1,然後呼叫i;如i=4;printf("%d\n",++i);輸出的是5,同時i=5

哪位高手幫我解釋一下845 865 915

這是一個intel晶片主機板的成長曆程.845前兩年的弄潮兒,現在基本是915和945,965和975屬於目前的超前產品,家裡有錢砸的發燒友級別才會考慮.簡單點說,就是一個比一個好.你要問晶片相關資訊太多了,自己可以想具體瞭解哪款在網上隨便一查,很方便的. intel晶片組往往分系列,例如845 8...

c語言幫我解釋下程式c語言,幫我解釋一下下面程式的每句話的意思

include typedef struct date typedef struct 宣告乙個結構體型別 student record define max num 10 10個學生的資料student record students max num 以下是判斷輸入年月日是否正確 int valid...

哪位高人給我解釋一下,哪位高人給我解釋一下

確定你得了B肝。B肝 小三陽 是指在B肝的 兩對半 檢查的五項指標中,表面抗原 hbsag e抗體 hbeab 和核心抗體 hbcab 檢測均是陽性。而在B肝兩對半檢查報告中的所體現形式是hbsag hbeab 抗hbc 凡出現 小三陽 均提示急性或慢性B型肝炎,體內病毒複製,為B型肝炎病毒複製狀態...