Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Пятница
29 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Микроконтроллеры
767961
Топик полностью
mr-x
(11.07.2017 11:50, просмотров: 249)
ответил
LightElf
на
Эээ. Выражусь точнее: компилятор не обязан уметь выполнять плавучие операции в compile time. Потому int array[((int)1.0f)+((int)1.0f)] правильно, а int array[(int)(1.0f+1.0f)] - неправильно, хотя кое-где порой работает.
Ага, спасибо! Но инициализирует переменную без вопросов хоть тем, хоть этим выражением.
Ответить
Тут есть хитрость. Скажем, переменная const float, и мы ожидаем, что она попадёт в ROM. А компилятор легко может засунуть её в RAM и вычислить начальное значение во время выполнения программы, и будет в своём праве. Но это, скорее, юридические
SciFi
(10 знак., 11.07.2017 12:00
)