Сама запись:
#define FLT_EPSILON 1.19209290E-07F
Что такое
#define
и имя я знаю, но что значит 1.19209290E-07F нет. Объясните, пожалуйста.
#define FLT_EPSILON 1.19209290E-07F
это наследие си. На данный момент лучше писать так
const float FLT_EPSILON = 1.19209290E-07F;
В большинстве случаев эти записи эквивалентны по функционалу.
#define
- это директива препроцессора, которая просто обозначает замену одного куска текста на другой. Препроцессор работает ещё до компилятора (хотя сейчас это происходит почти одним процессов) и иногда может давать чудесные результаты. К примеру, мой любимый
#define true false
и все вхождения true как слова будут заменены на false (bool a = true;
будет заменено на bool a = false;
, но true1 не будет.)
У define есть одна особенность - они ничего не знают о областях видимости и работают от места объявления и до конца файла. Именно поэтому, очень интересно наблюдать, как windows.h подменяет max/min и вызывает ошибки.
Хотя define и страшные, и ошибок много дают, но иногда они позволяют элегантно и красиво решить проблемы.
Буковка F в конце - это просто литерал. Такой себе способ уточнить тип переменной (ведь по умолчанию 1.0 - это double). В новом с++ появилась возможность создавать свои собственные литералы.
1.19209290E-07 - это число с плавающей точкой (1.19209290 * 10^-7), суффикс F в конце указывает, что число типа float
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хочу научиться использовать слоты в Qt, но не могу нормально понять концепцию их созданияЯ читал книгу Макса Шлее, но я так и не понял, что...
как считать Экспоненициальную запись числа с файла ? ( подробнее желательно ) И в каком виде оно должно быть записано в файле?
Собсна, стоит задача: оформить функцию bool parseUrl(const string & url, Protocol & protocol, const unsigned int & port, const string & host, const string & document), которыая будет определять...