0LL是C和C ++中的常量。后缀LL表示常量的类型为long long。
1ULL表示类型为unsigned long long的常数1。
这种规则同样也适用于浮点数:
1.0f 表示类型为float的浮点数1.0。
1.0 表示类型为double的浮点数1.0。
1.0L表示类型为long double的浮点数1.0。
使用于字符串和字符,但它们是前缀:
'A' // of type 'char'
L'A' // of type 'wchar_t'
u'A' // of type 'char16_t' (C++0x only)
U'A' // of type 'char32_t' (C++0x only)
wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定wchar_t为32位,总之,wchar_t所能表示的字符数远超char型。
在C和C ++中,整数常量使用其原始类型求值,这可能会由于整数溢出而导致错误:
当我们改为long long类型后就不会溢出了
而下面这种写法可以确保乘法是按long long 类型进行的
示例:
需要特别注意的是LL将文字指定为long long,UL将一个文字指定为unsigned long,而0x0是0的十六进制。因此0LL和0x0UL是等效数字,但数据类型不同;前者是long long,后者是unsigned long。
0LL是一个长的长零。
0x0UL是一个无符号长零,使用十六进制表示法表示。 0x0UL == 0UL。