i 在for迴圈裡是怎麼實現的

2022-02-15 20:28:28 字數 6465 閱讀 5393

1樓:

如果說int i= 0;

int j = i++;與int j = ++i;那顯然是有你理解的區別

也就是字首和字尾自增的區別在於運算子返回值,而運算之後的變數值都是原先的變數值+1這也是毫無疑問的。

所以在你寫的for迴圈裡,我們因為沒有用到自增運算子的返回值,故沒有區別

不過如果寫成for (i = 0; i++<5; )和 for (i = 0; ++i<5; )就又出現區別了

「此時到下一迴圈是用1還是用2;實際上是用2,但書上不是說先用當前值在加1」對於這句話,你要理解所謂的「用」僅僅在i++這一個語句中,當這個語句執行完了,它也就用過了,那麼i的值已經是i+1了。這裡牽扯到一個賦值生效的概念,叫什麼我忘記了。。。不過請千萬不要小看「賦值」這個看似理所應當的東西,實際上在某種程度這是程序式程式設計語言的核心

2樓:蹇冠盛惜海

如果是for(初始化i;判斷條件;i++)迴圈和while迴圈就是初始化i,程式執行一次,同時i+1在賦值給i,判斷條件是否符合推出迴圈的條件,不滿足,則在執行此迴圈,i在加一,一次類推,直到滿足推出的條件

3樓:千羽傑

for(i=0;i<5;i++)與for(i=0;i<5;++i)這個在意義上是不同的,但是由於沒有用到跟i的具體關係,所以你看不出來。i++當然是先判斷i,再加1,而++i當然是先加1在判斷啦

4樓:華師來的

簡單說~++a和a++是在當前的一條語句會有所不同~比如~a=i++和b=++i;這兩條語句中~如果i=1;則a=1,b=2,而當這兩條語句執行完~

i的值都等於2~

在for迴圈中~++i和i++後面都有分號~也是一條語句~所以執行完~都是一樣~都是i+1.

for迴圈的累加條件i++ 和 ++i有什麼區別

5樓:茜拉密

i++是先進行一次迴圈,在進行累加;++i是i先進行一次累加,再迴圈。

兩個對於迴圈的次數都是沒影響的,都是5次,都是當 i 小於5 不成立的時候跳出迴圈,但後面的 i 還是會遞增1的。

兩者不同的地方在於++i 佔用的空間比 i++ 要小,i++是多定義一個變數的。看看運算子過載可以知道是怎麼回事。

在for迴圈中,如for(i=0;i<5;i++)與for(i=0;i<5;++i)在for迴圈的次數上沒有區別,都是五次,因為i++和++i都是在for迴圈內的語句執行後才執行!

6樓:匿名使用者

迴圈變數++i 和 i++對for迴圈而言是等效的。例如int i;

for( i=0; i<100; i++)for( i=0; i<100; ++i)這兩個迴圈的迴圈體都被執行了100次;迴圈結束時,i 的值都等於100。

7樓:匿名使用者

一般來說,二者之間沒有區別,這是對ansi c來說的,因為ansi c沒有規定二者的實現方法。也有人說有區別,這是針對某個c語言的具體實現而言的,這些人認為++i,比i++效率更高。

8樓:think說

int i=1,a;

a = i++;

a = ++i;

前面的a = 1而後面的a =2

因為i++是先賦值後計算,而++i則是先計算後賦值,這樣說相信你會明白的,而在for迴圈裡面的條件語句就沒有區別了!

9樓:油煎餅把燦

你問的問題的答案肯定是沒有區別,

你看看下面四個例子就懂了

for (a = 1; a < 3 ; a++);

printf("%d\n",a);

輸出的結果是3

for (a = 1; a < 3 ; ++a);

printf("%d\n",a);

輸出的結果是3

for (a = 1; a < 3 ; a++)printf("%d\n",a);

輸出的結果是2

for (a = 1; a < 3 ; ++a)printf("%d\n",a);

輸出的結果是2

10樓:

for(int i=0;i<10;i++)for(int i=0;i<10;++i)這樣沒有區別。

int i=1;

int a = i++;

int a = ++i;

這時才有區別

第一個a是1

第二個a是2

11樓:windy岸

兩者都是在迴圈迭代結束後執行

12樓:匿名使用者

中ci++先引用後增值,++i先增值後引用

c語言for語句中,for(i=1;i<=5;i++)是在迴圈的最後才執行i++還是一開始就執行i

13樓:月輪天唯五

迴圈的最後

比如第一次i=1;然後立即判斷,如果通過然後執行語句{};執行完語句後i+=1;然後再判斷,如果通過再執行{}

14樓:己若雲

執行完迴圈後再自增1

15樓:匿名使用者

不懂。你兩種都試試唄

for迴圈中的i++何++i沒區別嗎?

16樓:

for迴圈中的i++和++i是有區別的,區別如下:

i++是先引用i的值再自加,而++i是先讓i自加再引用i的值。本迴圈中i++的輸出值為0 1 2 3 4 5 6 7 8 9,而++i的輸出值為1 2 3 4 5 6 7 8 9,但兩種演算法執行完畢之後,i的值都為10.一般實際應用中,先加在引用顯得更高效。

for迴圈中的變數可以是一個也可以是多個,不要侷限於一個變數處理到底,那樣有時會很單調,當程式適合把多個變數組成迴圈時,用多個for語句來表示就是有些浪費了!

17樓:zzllrr小樂

i++是先取i值進行本程式語句的計算,然後再自加1

++i是先自加1,再進行本語句運算。

如果只進行自加,而不涉及其他運算的情況下,兩者效果是一樣的。

18樓:嵐洌

++i是先讓i自加再引用i的值,而i++是先引用i的值再自加。而迴圈中的這個沒有參與i值的引用,所以是沒區別的。但是如果參與到i值的使用,就不同了,例如:

#include

using namespace std;

int main()

這個輸出結果就是0 1

19樓:落恬靜

for迴圈中沒有區別,如下測試程式結果均為012345

20樓:

i++是先取i值進行本語句的計算再自加1,++i是先自加1再進行本語句運算。

如果是i++;這種只進行自加而沒有其他運算的情況下,效果當然是一樣的咯。

21樓:匿名使用者

沒有區別噢

都是i的增值

有時候for內的第三個表示式還可以省略的

22樓:匿名使用者

在相同情況下,for語句中的 ++i 比 i++ 更加高效。

關於j**a中for迴圈和i++的問題

23樓:匿名使用者

這道題目主要是考察你對i++和++i的理解。一旦一條語句中有i++的出現,你可以這樣理解,把i++所在的語句拆分成兩條:第一條就是在原語句不變的基礎上,去掉++二字;第二句就是i = i+1。

以i++<10為例,即:i<10;i++;。system.

out.println(i++);就是:system.

out.println(i);i=i+1;。而對於++i的理解就相對容易了,也是拆分成兩條語句:

第一條就是i = i + 1;;第二句就是在原語句不變的基礎上去掉++二字。按這個理解,你再看看能不能捋順。

24樓:匿名使用者

當i = 9時,執行到i++ < 10,此時9<10,於是執行i++ < 10裡面的i++,此時i=10,然後繼續迴圈,執行後面的i++,此時i= 11,繼續下一迴圈,到i++ < 10這一塊,11<10,不成立,於是執行執行i++ < 10裡面的i++,此時i= 12,然後到列印語句,先執行++i,此時i就是13了,再列印i,就是13

25樓:匿名使用者

看你的loop覺得你想要的結果是:1-9吧,你的loop有兩個錯:第一,for()裡第一個引數是專門針對loop裡的運算進行指定的,loop外的一律起不到作用,寫的話只能這麼寫:

for(int i=o;i<10;i++);第二,println裡沒必要寫++i。 歡迎追問

請問這兩個for迴圈 中 ++i與i++的作用一樣麼?

26樓:四舍**入

示例for迴圈**中++i與i++主要有以下區別:

1、用法不同:++i是先改變i的值即加1後再使用i的值;而i++是先使用i的值在改變它的值即加。

2、for迴圈內部僅形式不同:當i++迴圈和++i迴圈在for迴圈內部,雖然形式上明顯不同,但輸出結果可以一樣。

27樓:矛盾小少年

本題中的++i和i++是一樣的,因為for迴圈中的++i與i++的值都會帶入第一層中去的,即i=m+1。在此我要宣告的是++i是先增加後賦值,i++是先賦值後增加的。但是m+1=5的話,++i=i++的都是6。

所以你的說法是錯誤的。

28樓:匿名使用者

這兩個的for迴圈一樣

++i是先加後用 i++是先用後加

但是你沒有理解for迴圈執行順序

for(a;b;c)

先執行a,

迴圈:判斷b (不滿足退出)

執行c只有涉及到++i 或者i++ 直接賦值或取值的時候它們才有區別,這裡面只是對i增1所以沒有影響

29樓:匿名使用者

for迴圈中的++i和i++執行的效果是一樣的,但是++i的執行時間更短,所以演算法書上一般用的都是++i。

30樓:封禁決

兩個for迴圈是一樣的,其變數i的初始值是一樣的,i++與++i對其沒影響。

c語言中for迴圈語句 for(i=1;i<10;i++)這個一共執行幾次 我總是無法完全理解 求

31樓:匿名使用者

首先要知道for語句

的執行原理,這樣你就知道答案了:

現在以 for(i=1;i<10;i++)為例說明如下:

1.:執行到for語句時,讓i=1,但這隻執行一次。也就是說for語句中第一個分號前的語句只執行一次,就是相當於初始化

2.:判斷第二個分號前的**是否為真

如果為假則退出for語句,就不執行for語句的後面{}中的語句,當然也就不執行第二個分號後的**了

如果為真,則先執行for語句的後面{}中的語句,如果期間沒有跳出語句的**則執行第二個分號後的**,再跳回到2步進行判斷!

所以你的這個for迴圈如下執行

先 i=1

1次,此時i=1,滿足i<10 執行for語句內**,執行i++(i=2)

2次,此時i=2,滿足i<10 執行for語句內**,執行i++(i=3)

3次,此時i=3,滿足i<10 執行for語句內**,執行i++(i=4)

4次,此時i=4,滿足i<10 執行for語句內**,執行i++(i=5)

5次,此時i=5,滿足i<10 執行for語句內**,執行i++(i=6)

6次,此時i=6,滿足i<10 執行for語句內**,執行i++(i=7)

7次,此時i=7,滿足i<10 執行for語句內**,執行i++(i=8)

8次,此時i=8,滿足i<10 執行for語句內**,執行i++(i=9)

9次,此時i=9,滿足i<10 執行for語句內**,執行i++(i=10)

此時i=10,不滿足i<10 退出for語句,未執行i++(i=10)

32樓:無奈去遊戲

9次 i=1 小於10 進入迴圈 執行宣告 後i++i=2 一次完成,

返回for 判斷小於10 進入迴圈執行宣告後i++i=3 2次完成,

返回for 判斷小於10 進入迴圈執行宣告後i++i=4 3次完成,

返回for 判斷小於10 進入迴圈執行宣告後i++i=5 4次完成,

返回for 判斷小於10 進入迴圈執行宣告後i++i=6 5次完成,

返回for 判斷小於10 進入迴圈執行宣告後i++i=7 6次完成,

返回for 判斷小於10 進入迴圈執行宣告後i++i=8 7次完成,

返回for 判斷小於10 進入迴圈執行宣告後i++i=9 8次完成,

返回for 判斷小於10 進入迴圈執行宣告後i++i=10 9次完成,

大於10跳出迴圈

在js中怎麼結束當前for迴圈,js裡的for迴圈問題,下面這個for迴圈是什麼時候停止的

1 跳出迴圈用break語句就可以實現。開啟hbuilder軟體,建立一個點選按鈕標籤和用於顯示迴圈內容的div標籤 2 在scrip標籤裡,建立點選觸發迴圈的方法,迴圈裡當迴圈到3的時候,用break語句跳出迴圈體,在button標籤上新增點選myfunction 函式 3 按下crtl s儲存後...

mfc中在button函式裡怎麼實現讀取中的內容

include locale cstdiofile f cstring str if f.open m filename,cfile moderead cfile typetext f.close setdlgitemtext idc button1,str mfc一個按鈕功能為讀取txt中的資料,...

號碼隱私保護是怎麼實現的,怎麼實現個人號碼隱私保護?

這個是需要通過技術方案來實現的 打 想保護自己的隱私,不讓對方知道自己手機號碼,方法有 方法一 到運營商服務點或者網上營業廳取消來電顯示功能,不過這方法如果對方到運營商那查詢還是可以查到主叫號碼 方法二 使用一款叫雲撥 的網路 軟體,該軟體具有隱藏號碼和語音加密功能,對方無法知曉和查詢你的真實號碼,...