Глюк или фича?
От: 7C  
Дата: 13.06.07 07:14
Оценка:
Наткнулся на неожиданное поведение вычислений в программе:

int main()
{
    unsigned int z = 176400;
    long a = -4;
    long b = a*z/1000; //b=4294261
    long c = a*z; // c=-705600
    long d = c/1000; // d =-705
    return 0;
}

В комментариях — текущий результат вычисления.
Компилятор Visual C++ 2005
Почему b не равно d
Кстати, если убрать unsigned (т.е. сделать z знаковым), то b =-705.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.