為什麼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

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

金色潛鳥 字首加 減 與 字尾加 減 的不同 在於表示式 裡 的 值。表示式 裡,字首加 要先自增,後使用。表示式 裡,字首減 要先自減,後使用。表示式 裡,字尾加 要先使用原值。出了表示式後 再自增。表示式 裡,字尾減 要先使用原值。出了表示式後 再自減。a i 字首加 要先自增,後使用。執行 i...

關於C語言中自增自減運算子的疑問

對於每次判斷,會先判斷count的值是否小於5,然後count count 1如果此時條件滿足則繼續,否則退出迴圈。第1次遇到while判斷時 count 0判斷後count為1.第2次遇到while判斷時 count 1判斷後count為2.第3次遇到while判斷時 count 2判斷後coun...

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

智慧型it人生 這個要看你所用的編譯環境了,不同的編譯環境執行的順尋不一樣一般情況下是 如 i,i.在使用i之前,先使i的值加 減 1i i 在使用i之後,使i的值加 減 1 如 i,i.在使用i之前,先使i的值加 減 1 i i 在使用i之後,使i的值加 減 1 想得到正確答案,請提供詳細 c語言...