C/C++ nie posiada 2 operatorów dzielenia - dzielenia całkowitego oraz dzielenia rzeczywistego(z resztą), aby wynik był liczbą rzeczywistą co najmniej jeden z liczb musi być rzeczywista.
kompilator liczbę zapisaną w ten sposób uzna za całkowitą.
teraz już za rzeczywistą
Kod: Zaznacz cały
//rzutowanie wykonujemy już po dzieleniu,
//więc wynikiem będzie 3 - źle
std::cout << (double)(0x1c/010) << "
";
//wykonujemy rzutowanie na pierwszej liczbie przed dzieleniem,
//teraz pierwsza liczba jest rzeczywista więc wynik się zgadza
std::cout << (double)0x1c/010 << "
";
//pierwsza liczba jest mnożona przez rzeczywiste 1,
//przez co staje się rzeczywista - wynik się zgadza
std::cout << 1.0*0x1c/010 << "
";
//wynik dzielenia jest mnożony przez rzeczywistą jedynkę,
//3 - źle
std::cout << 0x1c/010*1.0 << "
";
O zapisie liczb w innych systemach wiesz od kolegi wyżej.