stdint.h头文件中有几个宏定义,看起来不容易理解,其中的INT64_C中使用了##和LL,如下面代码显示
#define INT8_C(x) (x)
#define INT16_C(x) (x)
#define INT32_C(x) (x)
#define INT64_C(x) (x ## LL)
#define UINT8_C(x) (x)
#define UINT16_C(x) (x)
#define UINT32_C(x) (x ## U)
#define UINT64_C(x) (x ## ULL)
#define INTMAX_C(x) INT64_C(x)
#define UINTMAX_C(x) UINT64_C(x)
其中的##是连接符,LL为long long类型的后缀,参考下面的例子
long i1 = 123L;
long long i2 = 123LL;
unsigned long u1 = 123UL;
unsigned long long u2 = 123ULL;
C++11中提供了ll和LL表示long long;(ll是LL的小写,不是数字1)
ULL可以用Ull,uLL,ull表示。