為什麼c 迴圈要使用後置的自增自減運算子,而不使用前置的自增自減

時間 2021-09-07 11:59:35

1樓:砍侃看

實際上,c++中的for迴圈中的計數器使用的是前自增還是後自增沒有什麼不同,除非自增的時候又參與了表示式運算,畢竟前自增與後自增還是有所不同的。c++ primer書中建議的是使用前自增,如果僅僅是計數器本身的自增操作,使用前自增還是後自增,完全看個人的喜好

2樓:匿名使用者

前置和後置都可以用,看你設計需求而定

比如:y=x++; 相當於y=x; x=x+1;

y=++x;相當於x=x+1; y=x;

它們執行後y值是不同的結果,一個是x先自增1再賦值,另一個是賦值後再自增

對於你舉的for語句例子,前置後置與實際執行結果是無關的,因此寫成前置、寫成後置都是可以的。

3樓:幻形術

理論上,參考

哪個是前置,哪個是後置,弄清楚了麼?

理論上,++ i 返回左值,比 返回右值的i ++效率高,但對於基本資料型別,差別並不明顯,再如果有編譯器的優化,這些都不是事兒。

4樓:匿名使用者

在某些設計複雜的語句中,前置和後置的自增自減會有差別,一般情況下兩者結果相同。但是作為一個邏輯清晰、易讀性強的程式,我個人討厭那種炫技式的複雜語句,搞得很難懂。用最簡潔、直觀的方式去編寫**。

5樓:匿名使用者

有時候前置和後置效果是一樣的

例如你現在的這個for迴圈,前置後置都可以的

6樓:科技大記事

規則不一樣,先後執行的問題

c語言中自加與自減運算子前置與後置結果為什麼有時一樣有時不一樣啊,怎麼區別

7樓:智慧it人生

這個要看你所用的編譯環境了,不同的編譯環境執行的順尋不一樣一般情況下是:

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

8樓:匿名使用者

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

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

9樓:匿名使用者

想得到正確答案,請提供詳細**

c語言關於自增自減運算的問題

10樓:匿名使用者

這種問題,沒必要糾結。

如果是 q=(++j)+(++j);//結果是7+7=14連續加法,正常邏輯應該為3*8=24,但實際上,因為編譯器的優化,連加被分割為兩次暫存器運算,等價於:

int edx = (++j)+(++j);

q = edx + (++j);

這樣就成了7+7+8=22

這是優化問題,不必糾結。

這就是實際運算模式,如果明白彙編,可以看懂。

11樓:匿名使用者

這個細心點就好 ++i 和i++的區別 共同點都是i自增1 只是++i和i++前增後不變 在計算過程中一定要注意i值得變化 在算一遍就好

12樓:匿名使用者

c語言的前置++和後置++,稱為自增運算子前置--和後置--稱為自減運算子,下面以自增運算子的區別來加以介紹,自減類似

如果單獨寫 自增運算子為一個語句,二者沒有區別++i; 和 i++; 都是讓i+1賦值給i但是如果把自增運算子寫入到另外表示式中二者就有很大區別了例如i=5;

j=i++;

執行後i為6,j為5

i=5;

j=++i;

執行後i為6,j為6

13樓:雪豹出擊

在一個完整的表示式中使用自增或者自減是由***的。也就是說c語言不保證 p=(i++)+(i++)+(i++),這三個i++的執行順序,並不一定是從左至右分別執行三個i++,有可能是跳著執行,例如q中的三個++j就不是從左至右依次執行的。但是c保證一個完整的表示式中,p,q的i,j分別自增了三次,也就是保證最後的i,j 都是8,但是不保證p,q的值。

所以應該避免在程式中使用類似的聯絡自增自減表示式,以避免出現不可預知的結果啊。

14樓:

這個結果和編譯器有關,沒什麼意義,程式設計時應儘量避免。

15樓:

你看這個**。先求的p結果是14 , 按我們算應該是13,但編譯器是在編譯過程中認為()裡面的優先順序的相同的,而且都是先自增,所以編譯器就把先把這兩個自增計算了,然後就是7+7了。

而下面是一樣的,前二個也是同時進行。後面才進行也就是7+7+8,最後為22.  (我以前也問過,老師用編譯後的彙編**給我解釋的)

16樓:oo鐵戒指

同求,為什麼我算的是21

大容量鍋爐為什麼要使用煤粉燃燒的方式?

煤粉鍋爐的的技術比較成熟,由於煤粉被制粉系統研磨後比較細,故此整體鍋爐的磨損等問題比較輕微,而且燃燒效率高,整體鍋爐的執行比較穩定安全,且效率高,故此大容量鍋爐為什麼要使用煤粉燃燒的方式。1 一二次風出口截面應保證適當的一二次風風速比 x9 e3 m2 a,a 2 出口氣流有足夠的擾動性,使氣流能很...

為什麼要使用外部中斷外部中斷是幹嘛的為什麼要設定IT1和IT0為什麼要把P1賦值為0f

這堆問題讓我很尷尬。一個一個來吧 為什麼要使用外部中斷?這個問題可以和第二個一起回答。首先,你要知道什麼是中斷。中斷顧名思義,就是當達到某種條件或遇到某個事件時,微控制器立刻停下當前工作,馬上去處理這個條件,或解決事件,當處理完之後,又回到事件前工作狀態。外部中斷,就是當微控制器某個管腳的電平觸發設...

做生長素的實驗時候,為什麼要使用瓊脂塊

tang塘雨 1 瓊脂快可以吸收生長素,具有凝固性 穩定性,在試驗中為植物提供生長素 2 瓊脂不提供其他營養元素以干擾試驗,而且其中的生長素只上下運動,不會橫向運動,這樣試驗就不會受到光照的影響 3 鐵塊恐怕不能吸收生長素吧?4 木塊 海綿倒是可以吸收,但也容易揮發,而且不能保證裡面還有的生長素是均...