OT Ceckarsky kviz II
Lukáš Grepl
L.Grepl@sh.cvut.cz
Čtvrtek Březen 5 20:16:13 CET 2009
> Uzasne! Toto by ma pri pisani programu nenapadlo...Vysvetlenie sa ale
> skryva v inom pravidle:
>
> Otherwise, if the operand that has unsigned integer type has rank greater or
> equal to the rank of the type of the other operand, then the operand with
> signed integer type is converted to the type of the operand with unsigned
> integer type.
Myslel jsem si, že (a * b) se provede správně, pak se mezivýsledek
přetypuje na unsigned int (protože se nevleze do intu) a provede se
dělení. Ale ono ve skutečnosti to proběhne vlastně jakoby takhle
int a = -50; // (unsigned int)a == 4294967246 (32-bit)
unsigned int b = 50;
int c = ((unsigned int)a * b) / 10;
Takže to jsem dokonce napálil sám sebe :-).
Lukáš Grepl
Další informace o konferenci Hw-list