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