一、引言
代码中可以直接定义一个变量是可以指定变量数据类型,宏定义中也可以实现数据量类型的指定。
现在我们定义一个宏变量#define NUM 5,这个数字5是以什么类型存储的呢?答案是signed int。我们再这样定义一个宏变量#define NUM 5LL,此时的数字5又是以什么类型存储的呢?答案是signed long long。

二、解释
代码里会经常看到在一个数字后面加上U、L、F等符号,这表示什么意思呢?
首先说明下每个符号代表的意义:
1、数据类型
空白:默认为有符号整型,相当于signed int。
U(u):表示该常数用无符号整型方式存储,相当于unsigned int。
L(l):表示该常数用有符号长整型方式存储,相当于signed long。
LL(ll):表示该常数用有符号长长整型方式存储,相当于signed long long。
UL(ul):表示该常数用无符号长整型方式存储,相当于unsigned int。
ULL(ull):表示该常数用无符号长长整型方式存储,相当于unsigned int。
F(f):表示该常数用浮点方式存储,相当于float。

2、进制
空白:默认为10进制。
B(b):2进制(仅汇编里使用,C代码里禁止使用,如1101B)。
H(h):16进制(仅汇编里使用,C代码里禁止使用,如1A2H)。

数字前面加0:8进制。
数字前面加0x:16进制