ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
38299 Топик полностью
Ксения (02.09.2005 10:57, просмотров: 1) ответил AZ. на Т.е. шансы потерять точность при double ниже? :)
Шансы одинаковы :-) Согласно приведенной цитате, при реализации компилятора для конкретного процессора допускается отсутствие реализации высших (многоразрядных) типов по "техническим причинам". Однако даже в этих случаях авторы реализации обязаны сохранять совместимость со стандартом и поддерживать работоспособность С-кода, содержащего эти высшие типы. Например, если по каким-то соображениям не удается реализовать тип long, то тогда он должен быть установлен, как эквивалент типа int. В вашем случае наблюдается отсутствие реализации типа double, поэтому объекты этого типа будут обрабатываться как float. Тем не менее, если при вычислениях желательно иметь максимально возможную точность, то нужно использовать тип double или даже long double, хотя абсолютно никакого повышения точности на данном компиляторе это не даст. Зато если такая программа будет скомпилирована для другого процессора, для которого тип double реализован, то пожелание программиста будет учтено. А в вопросе с конкретным компилятором, лучше всего тут досконально разобраться: скомпилировать операцию сложения на типах float и double, а затем посмотреть в ассеблерном листинге какие процедуры компилятор использует в каждом из этих случаев. Если в обоих случаях вызывается одна и та же, то float и double в данной реализаии компилятора эквивалентны. А если же вызываются разные подпрограммы, то надо лезть в исходник библиотеки и смотреть разные это функции или одна из них вызывает другую. Сама с CodeVision не работала, а потому поделиться уже готовым результатом такого исследования не могу. Однако исследование это довольно простое, а потому провести его самому более желательно, чем следовать мнению неизвестно кого, высказанное на форуме. Много раз встречалась с тем, что форумные советы многие дают от балды :-), не утруждаясь проверками.