- 论坛徽章:
- 0
|
本帖最后由 l4rmbr 于 2013-05-07 23:06 编辑
*** 短答案 ***
这是C语言中标记整数常量的标识, UL表示说这个1是一个unsigned long 的常量(因为1是在unsigned long
的表示范围之内)
*** 长答案 ***
具体地, C标准规定: 整数常量的类型是第一个可以表示该数值的整型. 比如, 1不加UL的
话, 默认地它的类型是int, 这是一个有符号类型哦. 而内核中为了限制说这个值是个无符号的
值, 就明确地标出UL,表示:
这是个1, 它能被一个unsigned long 类型的整型表示, 所以它的类型就是unsigned long,
你(编译器)不需要费心再为我去推算它的类型了.
另附, C标准中关于一个整数是如何决定它类型的优先级表:
后缀 类型
无 int
long int
long long int
u or U unsigned int
unsigned long int
unsigned long long int
l or L long int
long long int
ul or UL unsigned long int
unsigned long long int
ll or LL long long int
ull or ULL unsigned long long int
注意, 在上表中,比如对u, 则编译器依次判断常量值是否在unsigned int表示范围内, 是类型就是unsigned int,
否则, 是否在unsigned long int表示范围内, 是类型就是unsigned long int,
否则, 是否在unsigned long long int表示范围内, 是类型就是unsigned long long int.
其余一样道理.
更详细请参考C99标准:
ISO/IEC 9899:1999(草案) 6.4.4.1 Integer constants
|
|