U和L是 整数文字量的后缀修饰,用于显示指明整数文字量的类型为unsigned int(U)和long int(L)。
类似的还有浮点数文字量的后缀修饰F 或 f,用于指明文字量表示的是一个float,而不是默认情况下的double。
现在才明白UL是标记该宏长整型 十进制 数据,而不是字符,也不是int型数据。
C语言中默认宏中的数字是整型数据。
如下面的例子:
#define LENGTH (20UL*1024*1024)
//你要输出他的话就要这样:
printf(“LENGTH is %ld/n”,LENGTH);
例如:
#include <stdio.h>
#define SECONDS_PER_YEAR 60*60*24*365UL
int main(void)
{
unsigned long int a = SECONDS_PER_YEAR;
printf("a = %ld/n",a);
return 0;
}
输出结果为
a = 31536000;
注意:
#define SECONDS_PER_YEAR 60*60*24*365UL //错误
#define SECONDS_PER_YEAR (60*60*24*365)UL
编译GCC程序,提示这个错误 error: expected ‘,’ or ‘;’ before ‘UL’;是因为UL写在了括号外面,无法与数据进行匹配;