2011-04-16 217 views
0
for(int i=0; i < size; i++) 

我在上面的代碼中聲明瞭一個變量,收到一個編譯時錯誤:類似這樣的聲明的東西根據ISO標準已經過時了。聲明一個int變量

然後我聲明的變量的像這樣

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

循環.......和它的工作????

誰能告訴我這個聲明,因爲據我所知,在C++中,我們不能只在頂部聲明變量在C,但低於同時我們需要它的任何地方。

,我用的編譯器是gcc。

+3

你真的* *用C+++?你正在使用哪種編譯器? – Nawaz 2011-04-16 14:46:59

+0

我被編譯在相剋的Solaris ++(不是GCC)soory關於上述 – mukesh 2011-04-16 14:52:05

+0

錯誤粘貼您的命令行與正在編譯 – fazo 2011-04-16 14:54:11

回答

1

第一個聲明僅在for循環的範圍內聲明i。第二個在外面的範圍內聲明它。兩者都完全有效。當你想在循環後使用的i的值,你需要使用第二種情況下,這將在一般情況下,您必須在迴路中的break條款並想找出哪個迭代,你打破了循環的情況。

+0

謝謝你們我這只是驚訝這個錯誤反正我覺得我可能要在代碼再看看並在這裏帶出源代碼,以便evry身體可以看看它,謝謝無論如何 – mukesh 2011-04-16 14:55:28

2

你很可能用gcc代替g^++編譯(或xl_C代替xl_C++等)

否則,請檢查你是不是傳遞一箇舊標準(與-std = C89或-ansi)

+0

好的,謝謝sehe我必須看到... – mukesh 2011-04-16 14:50:36

1

我猜你會在循環結束後使用i

從前一時間,碼的第一個比特是等同於第二,在範圍環路聲明i,所以這樣的代碼是可能的:

for (int i = 0; i < size; ++i) { 
    // do something 
} 

if (i != size) { 
    // do something else 
} 

在標準C++,這是無效的; i僅在循環的主體中可用,並且您需要在循環外聲明它以在那裏訪問它。