Первый раз столкнулся с такой проблемой:
По непонятной причине компилятор вместо констант float и double генерирует их значение без дробной части, например:
Есть функция с прототипом:
int Do(int, int, float);
В коде вызывается так:
int nRes = Do(1, 15, .8f);
Результат: в функцию в третьем параметре передается 0. Если в дебаге зайти в Do, дебаггер это показывает. Ассемблерный код вызова генерируется такой:
mov esi, esp
push 0
push 0Fh
push 01h
call Do
mov nRes, eax
Что самое смешное, если что-нибудь отредактировать не меняя смысла, например, стереть точку в .8f, а потом ее опять поставить, то генерируется код, который и должен генерироваться! Но и это не всегда срабатывает. При этом ребилд не помогает.
Такая же ерунда, например, если есть такой код:
double d1, d2;
d1 = d2 = 0.5;
в результате и d1, и d2 равны .0.
Какие у кого есть соображения? Может ли это быть ошибкой компилятора?
Здравствуйте, Pavluha! Вы писали:
P> Такая же ерунда, например, если есть такой код:
P> P> double d1, d2;
P> d1 = d2 = 0.5;
P>
P> в результате и d1, и d2 равны .0.
P> Какие у кого есть соображения? Может ли это быть ошибкой компилятора?
Или ты обкурился или чудной компилятор. Выбирай
Кстати какой именно?
Posted via RSDN NNTP Server 1.8 beta
Здравствуйте, GarryIV, Вы писали:
GIV>Или ты обкурился или чудной компилятор. Выбирай
GIV>Кстати какой именно?
Хм... не употребляем-с.
А компилятор — расчудесный майкрософтовский из Visual Studio 7.0
Когда я первый раз такую свистопляску увидел, решил, что пора отдохнуть немного
Не помогло.
Hello, Pavluha!
You wrote on Fri, 06 Feb 2004 12:04:12 GMT:
P> По непонятной причине компилятор вместо констант float и double
P> генерирует их значение без дробной части, например:
P> Что самое смешное, если что-нибудь отредактировать не меняя смысла,
P> например, стереть точку в .8f, а потом ее опять поставить, то
P> генерируется код, который и должен генерироваться! Но и это не всегда
P> срабатывает. При этом ребилд не помогает.
Слегка похожие глюки я наблюдал, когда процессор перегревался.
Best regards,
Sergey.
Posted via RSDN NNTP Server 1.8 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Pavluha! Вы писали:
P> Здравствуйте, GarryIV, Вы писали:
GIV>> Или ты обкурился или чудной компилятор. Выбирай
GIV>> Кстати какой именно?
P> Хм... не употребляем-с.
P> А компилятор — расчудесный майкрософтовский из Visual Studio 7.0
P> Когда я первый раз такую свистопляску увидел, решил, что пора отдохнуть
P> немного Не помогло.
Надаюсь никто не баловался макросами типа #define double int
Posted via RSDN NNTP Server 1.8 beta
Я с таким сталкивался в Borland C++ 3 под дос который. Но это у меня получалось если выставлять опцию линковать через asm. Всё что было сзязано с числами с плавающей точкой — не работало. И то кажется я ещё и включал программную эммуляцию FPU.
Может что с опциями компилятора ?
Posted via RSDN NNTP Server 1.7 "Bedlam"