выражения, результат которого дробное число.. К примеру #define const 1/8000000 в среде считается как 0, к тому же тип у него unsigned long. ЧЯДНТ?
Использовать привидение типов прямо в define? Типа #define const (float)(1.0/8000000.0)
Может потому что у него тип unsigned long?
Кажется, пробовал, не помогло
Если не помогло, то, скорее всего, этот float при выводе преобразуется в unsigned long и вся дробная часть отбрасывается
не читаешь документацию, что еще может быть? резудьтат деления целых всегда целое. что бы было float надо что бы хотя бы одно из было тоже float #define const 1.0/8000000
Это всё хорошо, это всё отлично. Суть вопроса была именно в расчете дробного значения препроцессором. А он не хочет, как ни крути
что за хуйню вы несёте? у вас там что, будет потом #if const*10005000 > 10 ?
В чём хуйня собственно? Какая разница что там будет дальше?
в том, что ты не читаешь документацию препроцессор производит вычисления только в директиве #if для выбора ветки
#define должен тупо заменить одно выражение другим, в слепую. А потом компилятор разбирается с тем, что получилось. То есть #define FLOAT_VAL 1.0/800000.0 Просто то что справа туда, куда вы впишете FLOAT_VAL. А что там получится, это уже решает компилятор. Про сохранение точности константы, это отдельная тема, конечно
Посмотрите текст после препроцессора и вопросов не будет. Совсем
да, похоже завтра я посмотрю. Не исключаю, что я могу быть не прав)
Обсуждают сегодня