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