C 中的乙個問題 for int i

2022-12-04 09:35:05 字數 3921 閱讀 1599

1樓:**的可樂

舉個例子來說吧,比如有這麼個for迴圈:

for(int i=0;i<3;i++)

for(int j=0;j<4;j++)

do_something();

它可以為:int i=0;

while(i<3)

/*區域性域b結束*/

i++;區域性域a結束*/

相信學過c++的人都知道域的概念,這裡while後面的大括號構成乙個區域性域,而int i和int j則恰恰只是這兩個區域性域的變數,因為他們的宣告是在對應域的頭部,但是i和j的位置是有區別的,請仔細看上面的註釋。

因此,上面的例子中,在域a以外引用j是非法的,但是,在域a外引用i不是非法的,因為i就是定義在域a之外的(實際上,i相當於是宣告在全域性域,即main域中的)。

我想這也就同樣解釋了為什麼樓主的**中,第三個for中的i可以不加int,因為這時的i是已經在main裡面宣告過了的,因此不需要再宣告。而j就不行。

前面說過,第乙個j的作用域在第4個for這裡已經結束了,因此如果這裡不加int直接對j進行引用將是非法的,所以必須加乙個宣告。

所以一般遇到這種情況,我提倡這樣寫:

void main()

樓上**錯誤,i和j被重複宣告。

2樓:匿名使用者

我想應該是 上面的主方法裡定義過了 i ,而後面的j 前面沒有定義,所有不能認識會報錯!

如果你這樣就不會報錯了。

void main()

c++中,for(int i=1;i++<4;)是什麼意思 改寫成三個分句該怎麼改

3樓:

只好改成for(int i=1;i<4;i++)但這二者是有些許差異的,若迴圈體中用不到i,這二者是等價的;若迴圈中用到i,那麼前者的i已經增1了,而後者的i還沒有增1。

4樓:嗔風過隙

迴圈,整型變數i;i初始值為1;i做單步加法迴圈,直至i≥4時停止,且捨去4.

int i=1;

while (i < 1)

break;

5樓:小維天使

樓上的,效果是不一樣的。

關於c++中for語句:for(int i=0;i<=100;i++)

6樓:匿名使用者

首先給你介紹下,for()迴圈語句執行的順序。如下:

for(設定初始值;執行測試;更新用於測試的值)執行迴圈操作;

他們執行的順序是:

1.設定初始值。(只在第一次迴圈才執行)

2.執行測試,看看迴圈是否應當繼續進行。

3.執行迴圈操作。

4.更新用於測試的值。

現在說你的程式,當i的值為100時,測試通過,迴圈操作進行,即sum加上100。接著i加上1變成了101,這時測試不能通過,那麼整個迴圈結束,sum並沒有加上101。提醒下,此時i的值為101。

不明白,可以追問。

7樓:匿名使用者

i<=100是包含100的。因為for迴圈語句的執行你可以把它理解為幾個if語句。就拿你上面的那個舉例來說吧,for (int i=1;i<=100;i=i+1)可以等同於:

int i = 1;

while(1)

else}所以,當i = 101時,就不會再進入迴圈了,就會跳出for迴圈了,所以不會加101。

8樓:狂

迴圈語句中的第二句 也就是判斷是否符合迴圈的條件。

i<=100;就是說當i<=100成立的時候迴圈才執行,當i=101的時候 條件不成立 不執行迴圈體裡的內容。

9樓:夏天快走

因為i<=100,當i=101時大於100,就退出for語句。

10樓:匿名使用者

當i = 101時,就不會再進入迴圈。

c++問題。下面這個程式for部分應寫成(int i=0;i<3;i++),但為什麼這樣可以正常執行?

11樓:肥東小新

對於for(int i=1;i<=3;i++)這是執行三次(i=1,i=2,i=3);對於for(int i=0;i<3;i++)也是執行三次(i=0,i=1,i=2),所以沒影響。望採納!

12樓:小賓

其實你是申請了4個int型的空間的,分別為a[0],a[1],a[2],a[3].

for(int i=0;i<3;i++)是使用前三個空間a[0],a[1],a[2];

for(int i=1;i<=3;i++)使用的是後三個空間a[1],a[2],a[3];

如果專你改為。

for(int i=0;i<=3;i++)

是可以屬輸入四個值的,c語言申請空間一定要少,沒有用到的記憶體不僅是一種資源浪費,還會拖慢程式的!

13樓:匿名使用者

你覺bai得為什麼不可以正常du執行?

首先zhi樓主你取了個a=new int[3]呀for迴圈語句本dao來回都是可以寫成int i =1的。你寫答成for(int i=1;i<=3;i++)

就是說你的i 可能取的值有1,2,3。

如果寫成for(int i=0;i<=3;i++)那你的i便可取0,1,2,3了。

i到底初值去多少,要看樓主的需求了吧。

不知道這是不是樓主要的答案。

14樓:紅軍和法國

因為這個是動態記憶體分配,就像vector一樣,初始化為3個,但是肯定可以繼續新增,你可以試試,把for迴圈的3改成5也可以,一樣的道理。

15樓:匿名使用者

是這樣的,可以訪問陣列外的空間,但是不安全。

16樓:匿名使用者

for(int i=1;i<=3;i++)這個語句的執行順序是int i=1; 只執行一次。

執行判斷條件i<=3;若滿足,執行迴圈題;否則,執行i++;

當i>3,就結束執行迴圈體。

c++語言中,用for迴圈輸入乙個一維陣列 int a[]={0}; for(int i=0;i

17樓:科技大記事

不行,陣列必須有實際大小,才能分配記憶體。

18樓:丶醉丶夢丶境丶

你這樣寫這個陣列就只有乙個元素。

c++ 中for迴圈定義int變數問題

19樓:豬頭或火寶寶

樓主你好!!!

其實就是乙個作用域問題!!!

int index;index的作用域是for()的大括號內,只有for()迴圈結束才把index的記憶體釋放,index=i;其實只是把記憶體中的值給替換掉了,但位址沒有變化!!!

20樓:匿名使用者

原來是這樣 受教了。

最新的c++標準中,for(int i=0;i<10;i++){}這裡的i的生存期如何。(好像vc6中是從此到main結束)

21樓:匿名使用者

i的生存期是for語句的執行期間,不論是vc6還是vs2012都是一樣的。

在c++書中看到了這樣乙個語句:for(int i=1;i<=n;i++) cin>>a[i].data,a[i].index=i;加了個逗號是什麼意

22樓:

和for(int i=1;i<=n;i++)是乙個意思。用逗號後就成了逗號表示式,就成一句了,可以省去一對{}。當然逗號表示式還其他特點,只是這裡沒有用到而已。

23樓:匿名使用者

一句話的意思,最好還是分開寫然後加個大括號。

c語言問題,乙個c語言問題?

gcc是乙個著名的編譯器,屬於gnu編譯器套件,可以編譯很多種語言,一般用於編譯c c 程式,是linux下常用的編譯工具 編譯器只能說是一種翻譯 的程式,我們所熟知的dev c vs等其實屬於ide 整合開發環境 ide一般指包括了編譯器,編輯器等多種功能的軟體,功能比編譯器更加強大 linux下...

C語言問題,乙個C語言問題

4?結果是m 6吧 i 1,j 3時,if條件不成立m 3 i 1,j 2是,if條件不成立m 6 i 1,j 1,時,if條件不成立m 6 i 2,j 3時,if條件成立,執行break,顯示內層迴圈結束返回外層迴圈 i 3,退出外層迴圈 輸出m值6 i 1j 3i j 3 m i j m 3 j...

C語言問題,乙個C 語言問題

以後樓主要注意自己c語言程式的書寫格式,這樣也有助於我們分析你的題目,幫你解答。我給上訴的題目重新編了正規的格式,應該跟你要表達的意思相同。include void main 幾個知識點!第一 這裡你要懂得for語句的組成方式,和執行順序。for的組成方式為 for 表示式1,表示式2,表示式3 f...