ci 和 i效能比較,不是問兩者的區別

2022-12-20 09:40:54 字數 6474 閱讀 8253

1樓:匿名使用者

i++效能會比++i要低。

因為i++操作過程中需要定義一個臨時變數,對其進行復制操作,然後同樣還要對原值進行自增操作,肯定效能會低。

而且你可以去看一些vc類的++(int)過載項:

_myt operator++(int)

在operator++(int)中一般都是去呼叫++*this;前置++運算來進行自增的,所以怎麼著都是前置的效能比後置的要高一些,當然幾乎沒差。

2樓:謎一樣的人

第一,a = ++i;這條語句的意思是 i=i+1;之後a=i

第二,a = i++;這條語句的意思是 a=i; 之後i=i+1;

第三,單獨一個i++ ,這個和單獨一個++i 效果一樣,都是i=i+1;沒有效能好壞之分

3樓:匿名使用者

前置++i 消耗少一些,只需加1後返回加1的結果就行了

後置的話要先儲存原來的值,因為要返回沒有加1之前的值作為操作結果

對於複雜的迭代器型別,後置可能會花費很大代價

4樓:雨落無聲無痕

++i 效率高一些,因為 i++ 有物件構成,需要呼叫建構函式和解構函式。

這是一道經典面試題,注意是問在c++中,不是c語言中!!!

5樓:

單獨使用,效果都是一樣的,沒啥區別~~

6樓:匿名使用者

這是兩個運算子過載的問題,相比較而言 i++更復雜。

7樓:沒有響應

都一樣....

你還不如直接寫 i=i+1 ......

c++中i++與 ++i區別是什麼?

8樓:盧沈麴醉冬

簡單的來說,++i

和i++,在單獨使用時,就是

i=i+1。而a

=++i,相當於

i=i+1;a=

i;而a=

i++,相當於a=

i;i=i+1;

如果實在搞不明白++

--怎麼回事,那也不是什麼事。

因為a=++i完全可以寫成

i++;

a=i。

a=i++完全可以寫成

a=i;

i++。

9樓:

i++ 是字尾運算,就是 先取出 i 的值,i再 +1++i 是字首運算,就是 i先+1,再取i 的值i = 1;

j = ++i;//j = 2, i = 2j = i++;//j = 1, i = 2對於 其他自定義資料型別 字首++ 比字尾++ 效率要高

10樓:千里牛馬

++i;

i++;

如果這麼寫的話意思就一樣了,

若在語句中用就不一樣了,如

int a=0;

a = i++;

則表示:a等於未增加前i的值,

而a = ++i則表示a等於增加1後i的值

11樓:

運算方式不同,前字尾

c++ 中 i++和++i的區別?? 30

12樓:匿名使用者

我感覺是你放輸出位置的問題

13樓:軒洋川

你要了解一點,賦值語句的話,是先計算出等號右邊的表示式的值,然後再賦值給等號左邊的變數。f[i++] = a[i]就相當於

int _tmp = a[i];

i++;

f[i] = _tmp;

可以按照上式這麼理解,但是這種寫法不正確,只能說編譯器內部差不多就是這麼解釋整個語句的。同理f[i] = a[i++]也就是先獲取a[i]也就是a[1]的值,然後i++得到i=2,再把a[1]的值賦值給f[2]。

14樓:匿名使用者

按優先順序從高到低的順序列出了所有的運算子及其結合性:

運算子優先順序

運算子 結合性

() -> 自左至右

! ~ ++ -- -(型別轉換) * & 自右至左

sizeof * / % 自左至右

+ - 自左至右

<< >> 自左至右

<< = >>= 自左至右

== != 自左至右

& 自左至右

^ 自左至右

| 自左至右

&& 自左至右

|| 自左至右

?: 自右至左

= += -= 自右至左

, 自左至右

所以 是 自右到左 f[i]=a[i++]; a[1] -> i = 1+1 -> f[i] = f[2] -> f[2] = a[1]

15樓:匿名使用者

你自己搞錯了吧,執行一下下面的**,看結果就知道了int f[10],a[10];

int i;

for (i=0; i < 10; i++)f[i]=a[i]=i;

i=1;

f[i++] = a[i];

i = 5;

f[i] = a[i++];

cout<

return 0;

我這裡輸出結果為1 5 6

c++中++i與i++的區別是什麼

16樓:匿名使用者

剛才看到一個問題,copy也是問這個差不多的問題,最佳答案居然是 int i=0;i+=; 居然是1我暈,明顯語法錯誤,可是我沒回答上他就關掉了,現在轉到你這來。

一、i+=s;為自身加上等號後面的的值,例如

int i=5;

i+=10;//此時i=15 ,相當於i=i+10;

二、如果你想要使用自增1或自減1,則使用方式是i++;或i--;( 或++i和--i;)

例如int i=5;

i++;//此時i=6

三、 i++;和++i的區別是,如果單獨執和沒明區別,如果與其它操作符一起執行,則有影響計算的前後次序,例如

例1: int i=1;

int b=++i; //此時會先將i自增1等於2,然後賦值給b,所以b=2

例2: int i=1;

int b=i++; //此時會先將i的值賦給b,然後i自增1,所以b的值是i沒自增1的值,所以b=1

17樓:陸美富

++i變數i和表示式同時增1

i++變數i增1,表示式為原值

18樓:匿名使用者

看到本書,說除了別人說過的區別外; i++需要編譯器多分配一個副本作為變數

19樓:倒黴熊

如果是單獨的語句

i++;

++i;

是沒有什麼區別的,執行後都是增1.

但下面是有區別的

a = i++;

b = ++i;

前者,專

相當於 a = i;i++; 後者相當於 ++i; b=i;

也就屬是在這時候,i++是先使用i的值,再改變i的值。而++i是先改變i的值,然後再使用改變後的i值。

20樓:天尊的光輝

++i是一個表示式,表示式的值是i+1,表示式過去後i的值也成了i+1

i++也是一個表示式,表示式的值是i,表示式過去後i的值成了i+1

21樓:

i++ 是字尾運

copy算,就是 先取出 i 的值,i再 +1++i 是字首運算,就是 i先+1,再取i 的值i = 1;

j = ++i;//j = 2, i = 2j = i++;//j = 1, i = 2對於 其他自定義資料型別 字首++ 比字尾++ 效率要高

22樓:

主要差異在於返回值,相同點在於對i進行自加:

++i返回的是i自加後的

版內容,i++返回的是i未自加的權內容。

舉個例子:

int i = 10;

a = i++;

vs int i = 10;

b = ++i;

結果分別是 i = 11, a = 10和 i = 11, b = 11。

將i++和++i彙編結果,若沒有使用其返回值賦值特性,結果是一樣的,有返回值差異在於彙編**執行先後(先自加還是先賦值)區別。

另外,關於for(i = 0; i < n; i++)與for(i = 0; i < n; ++i) 有差異的說法是扯淡的。現在我們看到的編譯器,基本都會彙編成相同的**(好像有基本經典教程說有差異,那只是針對古老的編譯器)。

c++中++i與i++的區別是什麼?

23樓:

主要差異在於返回值,相同點在於對i進行自加:

++i返回的是i自加後的內容,i++返回的是i未自加的內容。

舉個例子:

int i = 10;

a = i++;

vs int i = 10;

b = ++i;

結果分別是 i = 11, a = 10和 i = 11, b = 11。

將i++和++i彙編結果,若沒有使用其返回值賦值特性,結果是一樣的,有返回值差異在於彙編**執行先後(先自加還是先賦值)區別。

另外,關於for(i = 0; i < n; i++)與for(i = 0; i < n; ++i) 有差異的說法是扯淡的。現在我們看到的編譯器,基本都會彙編成相同的**(好像有基本經典教程說有差異,那只是針對古老的編譯器)。

在c++語言中,i++與++i有什麼區別

24樓:匿名使用者

先看一段**:

#include

int main()

++和++i的區別就是:

i++ :先引用,後增加

++i :先增加,後引用

換句話就是:

i++ : 先在i所在的表示式中使用i的當前值,再讓i加1++i : 先讓i加1,再在i所在的表示式中使用i的新值取決於++和i的相對位置:

++在i前面,i先加1,然後在表示式中用i的值;++在i後面,先在表示式中用i的值,然後i再加1。

25樓:

兩者都會將i自增1,區別是返回值。

i++返回i自增之前的值,++i返回i自增之後的值。

比如,i=1

a=i++,則a=1,i=2,a為i自增前的值a=++i,則a=2,i=2,a為i自增後的值

c++中for語句中i++和++i的區別?

26樓:**的翅膀

i++是先取i的值,i再+1,++i是i先+1,然後再取值for語句中的n++和++n其實結果是一樣的,以下情況列印結果都一樣

int i=5,j=5;

i++; printf("%d\n", i);

i=5;

++i; printf("%d\n", i);

j--; printf("%d\n", j);

j=5;

--j; printf("%d\n", j);

列印結果:66

44以下情況列印結果不一樣:

int i=6,j=4;

int w=i++;printf("%d\n",w);

int x=++i;printf("%d\n",x);

int y=j--;printf("%d\n",y);

int z=--j;printf("%d\n",z);

列印結果:68

42望採納,還有不懂的地方可以隨時提問

CMA和ACCA,兩者比較,真是不知道選哪個好啊

高頓教育很高興回答您 雖然acca和cma同為財會方面的證書,但是相對來說還是比較好選擇的。如果是大學生的話建議選擇acca,因為acca報考門檻比較低,課程也相對較多,更適合大學生利用空餘時間來學習 cma課程較少,相對簡單一些,更針對工作人士,所以畢業正在工作想提升自己的話選擇cma更合適一些。...

散打和拳擊這兩者之間學哪個比較好

我的個人建議拳擊比較好。或許拳擊拿俄式美式來分並不準確,但在那個年代,我國拳擊肯定是跟蘇修老大哥學的,說是俄式沒毛病。我所學的拳擊,注重每一拳的發力。除了刺拳外,其它直勾擺振拳都非常重,足以把人下巴打脫臼,一拳直接打暈過去。瞄準的不是下巴就是胸腹橫膈膜,感覺那個年代的拳擊真是實戰流,雖然也有迎擊拳和...

青春痘是不是和痤瘡是同概念?如果不是,兩者該如何治療

粉刺 痤瘡 按照皮損的表現可分為以下型別 1 丘疹型 皮損以丘疹為主,或伴有少許小膿皰,多為起初輕症的病人 2 膿皰型 皮損以小膿皰和紅色炎性丘疹為主,伴有米粒或黃豆大的小結節 3 結節型 皮損以花生至指頭大的紅色或紅色結節為主,伴有疼痛或小膿皰 4 囊腫型 皮損大小不一的皮脂腺囊腫為主,伴有結節,...