Dalsi zahada v C -> Prevod long int na string

Kamil Rezac krezac.conf na gmail.com
Úterý Červenec 26 09:10:43 CEST 2011


2011/7/26 Petr Tomasek <tomasek na etf.cuni.cz>:
>> >     } while ((n /= radix)>  0);
>> >
>> >to lze daleko jednoduseji zapsat jako:
>> >     } while (n /= radix);
>>
>> Je to pravda, ale je to opat formalne nespravne. Vysledok vyrazu nie je
>> logicka hodnota.
>
> V c-cku je kazdy vyraz zaroven logickou hodnotou, neni duvod
> to "formalne" psat jinak.

Kdyz to vidim, jen mala nesouvisejici vlozka (bez kridelek), moc se to
nevi, ale vysledek logickeho vyrazu (porovnani) nemusi byt nutne vetsi
nez 0, jen ruzne od 0 (je to zavisle na implementaci, na skole nam
rikali, ze byl prekladac, ktery mel "true" o hodote -1 (0xff....ff).
Ale v praxi jsem zatim "true" !=1 nepotkal. Prirazeni ma hodnotu
prirazovane hodnoty a plati to taky. Takze treba podminka if (i=-123)
{} je splnena, jen vetsinou prekladac hodi warning.

KR


Další informace o konferenci Hw-list