ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
4 мая
767979 Топик полностью
Nikolay_Po (11.07.2017 13:16, просмотров: 164) ответил LightElf на Эээ. Выражусь точнее: компилятор не обязан уметь выполнять плавучие операции в compile time. Потому int array[((int)1.0f)+((int)1.0f)] правильно, а int array[(int)(1.0f+1.0f)] - неправильно, хотя кое-где порой работает.
Когда мне нужно посчитать плавающую точку во время компиляции, я просто включаю заголовочный файл float.h. И компилятор вычисляет простые выражения с плавающей точкой на месте точно так же, как если бы работал код плавающей точки, но не включая сам код вычислений плавающей точки в машинный код, так как во время выполнения плавающая точка не используется. Говорю за Microchip XC16 и XC8.