引子:

常常在C语言中会有这样的数值:0xE000E000UL 表示 无符号整型 0xE000E000 ,此数值后面的 UL 为数值后缀,它的功能是对数值类型起到限定作用。

后缀:

如果没有数值后缀,则使用系统默认类型,例如:整数:int,浮点数:double 。

数值后缀说明:

  1. 数值常数有:整型常数、浮点常数;

    1.1 整型常数的表示形式有:十进制形式、以0开头的八进制形式(如:020表示十进制的16)、以0x开头的十六进制形式(如:0x10表示十进制的16),以0b开头的二进制形式(如0b10000表示十进制的16)。
    由于整型常数默认是signed int的。所以对整型常数进行类型转换的后缀只有:u或U(unsigned)、l或L(long)、u/U与l/L的组合(如:ul、lu、Lu等)。例:100u; -123u; 0x123L;
    1.2 浮点常数的表示形式有:科学计数形式和小数点形式。
    浮点常数默认是double的。对浮点常数进行类型转换的后缀只有:f或F(单精度浮点数)、l或L(长双精度浮点数)。(注:由于浮点型常数总是有符号的,故没有u或U后缀)。例:1.23e5f; 1.23l; -123.45f;

  2. 只有数值常数才有后缀说明;

  3. 数值常数后缀不区分字母大小写;


来源:Rayree1993
http://blog.chinaunix.net/uid-30256248-id-5757708.html