Portál AbcLinuxu, 13. května 2025 23:19

Dotaz: Porovnávání typu Uint8 z SDL (C++)

9.5.2009 15:50 Dušan Renát | skóre: 4
Porovnávání typu Uint8 z SDL (C++)
Přečteno: 437×
Odpovědět | Admin
Snažím se tu udělat podmínku, testuju proměnnou typu Uint8 na konkrétní hodnotu.
cout << direction;
vypíše trojku. Ani jedna z následujících podmínek ale NENÍ splněna:
if (direction == 3)
if (direction == (Uint8) 3)
if (direction == (unsigned char) 3)
Zato JE splněná podmínka: if (direction > 3)
Jak porovnám proměnnou tohoto typu s konkrétní hodnotou a proč to dělá, co to dělá?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.5.2009 16:06 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: Porovnávání typu Uint8 z SDL (C++)
Odpovědět | | Sbalit | Link | Blokovat | Admin

Mno a co říká cout << (Uint8) direction?

.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
9.5.2009 16:13 Dušan Renát | skóre: 4
Rozbalit Rozbalit vše Re: Porovnávání typu Uint8 z SDL (C++)
Taky trojku. Direction na Uint8 nemusím přetypovávat, to je proměnná typu Uint8. (Pro jistotu jsem to vyzkoušel.)
9.5.2009 17:42 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: Porovnávání typu Uint8 z SDL (C++)

Řekl bych, že problém by mohl být spojen s typovou konverzí a přetěžováním operátorů. Něco jsem o tom našel na

http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/cplr385.htm

Zkusil bych porovnat
if (5 == uint8_t(direction)). Co to dělá? Taky bych zkusil cout << uint8_t(direction). Ale rozhodně bych si přečetl nějakou dokumentaci k SDL na téma Uint8.

.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
9.5.2009 20:14 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: Porovnávání typu Uint8 z SDL (C++)

Huh, nějak jsem přešlápl a napsal 5 (:

.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
10.5.2009 02:33 joe
Rozbalit Rozbalit vše Re: Porovnávání typu Uint8 z SDL (C++)
Odpovědět | | Sbalit | Link | Blokovat | Admin

Osmibitový typ se vypisuje jako znak. Takže to nevypsalo 3, ale '3' (51).

cout << (int) direction;

Luboš Doležel (Doli) avatar 11.5.2009 14:11 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Porovnávání typu Uint8 z SDL (C++)
Dodám, že v podobných situacích může člověka rychle nakopnout pohled z debuggeru.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.