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...