For a definování řídící proměnné mimo cyklus – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

For a definování řídící proměnné mimo cyklus – C / C++ – Fórum – Programujte.comFor a definování řídící proměnné mimo cyklus – C / C++ – Fórum – Programujte.com

 

Doomista+1
Stálý člen
9. 5. 2014   #1
-
0
-

Ahoj,

dělám hru a vyskytuje se mi prapodivný bug na konci každého framu. Mám zde tři loopy:

for(i=0; i<4; i++){
rock[i].show(camera);
}
for(i=0; i<SHOT_MAX; i++){
shot[i].show(camera);
}
for(i=0; i<director.numberOfPlayers(); i++){
hrac[i].show(camera);
}

První dva se chovají jak mají, ale ten třetí, i když by měl dělat dva průchody, tak udělá jen jeden. Pokud si v posledním loopu deklaruji proměnnou novou lokálně jen pro daný loop, vše funguje. Pokud si vytvořím lokálně novou proměnnou v předposledním loopu, Visual Studio 2010 na mě vyhodí celou sadu hnusných warningů a program se stejně nechová jak by měl:

1>main.cpp(150): warning C4258: 'i' : definition from the for loop is ignored; the definition from the enclosing scope is used

1> main.cpp(146) : definition of 'i' ignored

1> c:\documents and settings\XXX\plocha\tinywars2\tinywars2\game/variables.h(37) : definition of 'i' used

1>main.cpp(150): warning C4258: 'i' : definition from the for loop is ignored; the definition from the enclosing scope is used

1> main.cpp(146) : definition of 'i' ignored

1> c:\documents and settings\XXX\plocha\tinywars2\tinywars2\game/variables.h(37) : definition of 'i' used

1>main.cpp(150): warning C4258: 'i' : definition from the for loop is ignored; the definition from the enclosing scope is used

1> main.cpp(146) : definition of 'i' ignored

1> c:\documents and settings\XXX\plocha\tinywars2\tinywars2\game/variables.h(37) : definition of 'i' used

1>main.cpp(151): warning C4258: 'i' : definition from the for loop is ignored; the definition from the enclosing scope is used

1> main.cpp(146) : definition of 'i' ignored

1> c:\documents and settings\XXX\plocha\tinywars2\tinywars2\game/variables.h(37) : definition of 'i' used

1>main.cpp(152): warning C4258: 'i' : definition from the for loop is ignored; the definition from the enclosing scope is used

1> main.cpp(146) : definition of 'i' ignored

1> c:\documents and settings\XXX\plocha\tinywars2\tinywars2\game/variables.h(37) : definition of 'i' used

Absolutně nechápu co se děje, může někdo poradit? Díky za pomoc

Nahlásit jako SPAM
IP: 90.176.176.–
Na vše stačí iostream...
KIIV
~ Moderátor
+43
God of flame
9. 5. 2014   #2
-
0
-
Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Doomista+1
Stálý člen
9. 5. 2014   #3
-
0
-

#2 KIIV
Fajn, sem jsem se nedogooglil. Normálně mám ve zvyku všude dávat int i přímo do toho loopu, jen mě tentokrát napadlo, jestli to není třeba pomalejší a zbytečný, když to dělám několikrát během jednoho framu a v rámci celýho programu na velké spoustě míst. Asi se na 'optimalizace' tohoto typu vykašlu a ušetřím si pár bolehlavů, jenom mě dost zaskočilo tohle dost divný chování

Nahlásit jako SPAM
IP: 90.176.176.–
Na vše stačí iostream...
KIIV
~ Moderátor
+43
God of flame
10. 5. 2014   #4
-
0
-

a na divny chovani existuje taky debugger a krokovani se sledovanim promennych... nema smysl se s tim parat po netu, kdyz jde zjistit problem behem par minut

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý