mogę napisać po prostuDeklarowanie i inicjalizacja zmiennej w pętli for
for (int i = 0; ...
zamiast
int i;
for (i = 0; ...
w C lub C++?
(i będzie zmienna i
być dostępne tylko wewnątrz pętli?)
mogę napisać po prostuDeklarowanie i inicjalizacja zmiennej w pętli for
for (int i = 0; ...
zamiast
int i;
for (i = 0; ...
w C lub C++?
(i będzie zmienna i
być dostępne tylko wewnątrz pętli?)
Jego ważne w C++
Nie było legalne w oryginalnej wersji C
Ale została przyjęta jako część C w C99 (gdy niektóre ++ funkcje C zostały rodzaju powrotem przeniesiony do C)
Używanie gcc
gcc -std=c99 <file>.c
Zmienna jest poprawna wewnątrz instrukcji for i instrukcji zapętlonej. Jeśli jest to instrukcja blokowa, jest ona ważna dla całego bloku.
for(int loop = 0; loop < 10; ++loop)
{
// loop valid in here aswell
}
// loop NOT valid here.
tak i tak. Ale dla C najwyraźniej twój kompilator musi być w trybie C99.
Tak, jest legalny w C++ i C99.
Jest to całkowicie legalne to zrobić w C99 lub C++:
for(int i=0; i<max; ++i)
{
//some code
}
i jego while
odpowiednikiem jest:
{
int i=0
while(i<max)
{
//some code
++i;
}
}
Acutally for(int i=0;i<somevalue;i++)
zawsze wiercić mnie jako preferowany sposób zdefiniuj pętlę for w c i C++.
O ile "i" jest dostępne tylko w Twojej pętli, musisz zadbać o nazwy zmiennych, których używasz. Jeśli zadeklarujesz "i" jako zmienną poza pętlą i użyjesz jej do czegoś innego, to spowodujesz problem przy użyciu tej samej zmiennej dla licznika pętli.
Na przykład:
int i = 10;
i = 10 + PI;
zostanie automatycznie zmieniony po trafieniu do pętli i zadeklarować i = 0
mogę napisać po prostu
Tak.
(I zmienna będę dostępna tylko wewnątrz pętli?)
Zależy kompilatora i jego wersji. AFAIK, w nowoczesnych kompilatorach i jest dostępny tylko w pętli. Niektóre starsze kompilatory mogą być dostępne również poza pętlą. Niektóre kompilatory pozwalają na dostęp poza pętlą i ostrzegają o niestandardowym zachowaniu.
Imyślę, że (ale nie jestem tego pewien), że "i poza pętlą" był używany gdzieś w VC98 (Visual Studio 6, który AFAIK, miał również globalnie zdefiniowaną zmienną "i" gdzieś może to prowadzić do niezwykle interesującego zachowania). I Myślę, że kompilatory (microsoft) wykonane około 2000..2003 rozpoczęły drukowanie "niestandardowych rozszerzeń używanych" do używania i poza pętlą, i ostatecznie ta funkcjonalność zniknęła całkowicie. Nie ma go w visual studio 2008.
Prawdopodobnie stało się to zgodnie ze standardem, ale nie mogę obecnie podać linku lub cytatu.
jeśli używasz zmiennej out The Loop będzie zmieniać za każdym razem, kiedy go zainicjować wewnątrz pętli
int i = 0;
for(int e = 0; e < 10; e++)
{
i = e;
}
teraz wartość będzie zmieniać za każdym razem
wypróbowanie prawdopodobnie wymagały mniej wysiłku niż umieszczanie tego pytania na ten temat: –
@Don: ale dałby złą odpowiedź, gdybyś użył starego, skorupiastego kompilatora (jak niektórzy wydają się nadal). Lepiej zapytać lub spojrzeć w standard, niż zaufać zachowaniu danego kompilatora. –