#define
не имеет размера, поскольку это не тип, а подстановка простого текста в ваш код C ++.#define
- это директива предварительной обработки, которая запускается до того, как ваш код даже начинает компилироваться.
Размер кода C ++ после подстановки равен размеру того, что у вас есть в C ++ выражении или коде.Например, если вы суффиксом L
, как 102L
, то он видится как long, иначе без суффикса, просто int.Так что 4 байта на x86 и x64, вероятно, но это зависит от компилятора.
Возможно, литеральный раздел Integer стандарта C ++ прояснит его для вас (раздел 2.13.1-2 стандарта C ++ 03):
Тип целочисленного литералазависит от его формы, значения и суффикса.Если он десятичный и не имеет суффикса, он имеет первый из этих типов, в котором может быть представлено его значение: int, long int;если значение не может быть представлено как long int, поведение не определено.Если он является восьмеричным или шестнадцатеричным и не имеет суффикса, он имеет первый из этих типов, в котором может быть представлено его значение: int, unsigned int, long int, unsigned long int.Если к нему добавляется суффикс u или U, его тип является первым из этих типов, в которых его значение может быть представлено: unsigned int, unsigned long int.Если к нему добавляется суффикс l или L, его тип является первым из этих типов, в которых может быть представлено его значение: long int, unsigned long int.Если к нему добавляется суффикс ul, lu, uL, Lu, Ul, lU, UL или LU, его тип - без знака long int