Re[6]: Глюк или фича?
От: Max M. Ниоткуда  
Дата: 14.06.07 06:04
Оценка:
Здравствуйте, 7C, Вы писали:

7C>Но это правило мне не объясняет почему по-разному обрабатываются строки:

7C>
7C>long b = a*z/1000; //b=4294261
7C>long c = a*z; // c=-705600
7C>


kankan в первом же ответе четко расписал:

//b — это преобразованный к long результат деления беззнакового a*z на 1000
// то есть 0xfff53bc0 сначала делится на 1000, а потом кастится к знаковому
long b = a*z/1000; //b=4294261

//здесь беззнаковое a*z (0xfff53bc0) сначала кастится к long(-705600), а потом аж делится на тыщу
long c = a*z; // c=-705600
long d = c/1000; // d =-705


7C>Меня смущает неожиданное и неопределенное поведение компилятора.


именно что ожиданное и вполне определенное.
// ...
подпись
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.