define中的U/L

来源:互联网 发布:java 接口中静态方法 编辑:程序博客网 时间:2024/06/05 15:21
U和L是 整数文字量的后缀修饰,用于显示指明整数文字量的类型为unsigned int(U)和long int(L)。  类似的还有浮点数文字量的后缀修饰F或f,用于指明文字量表示的是一个float,而不是默认情况下的double。经常发现一些C语言中通过#define 定义的数据中包含有UL符号,不理解为什么,把他去掉发现也没有什么区别。现在才明白UL是标记该宏长整型 十进制 数据,而不是字符,也不是int型数据。C语言中默认宏中的数字是整型数据。如下面的例子:#define LENGTH (20UL*1024*1024)你要输出他的话就要这样:printf(“LENGTH is %ld/n”,LENGTH);例如;#include <stdio.h>#define SECONDS_PER_YEAR  60*60*24*365ULint 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写在了括号外面,无法与数据进行匹配;
0 0
原创粉丝点击