如何初始化无符号长整型(unsigned long long)类型?

13

我正在尝试初始化一个 unsigned long long int 类型的变量。但是编译器报错:

"error: integer constant is too large for "long" type ".

初始化代码如下:

unsigned long long temp = 1298307964911120440;

可以请任何人告诉我问题在哪里,并为此提供解决方案吗?

3个回答

21

尝试在字面值后面加上 ULL


11

首先,请确保您的编译器支持 long long 类型。其次,将 "ULL" 后缀添加到数字上。


1
只是为了澄清,unsigned long long 至少要有 64 位。 - GManNickG
5
在 C++0x 正式成为 ISO C++ 2011 之前,unsigned long long 并不一定是任何具体的类型。更加具有移植性的做法是使用 <inttypes.h> 中的 uint64_t 类型,前提是该头文件和该类型都存在。 - Michael Aaron Safyan
1
@Michael:我认为我们正在谈论未来是一种默认的情况,因为Jerry说“确保你的编译器支持long long类型”。无论如何,如果我们想要强制一个数字恰好为64位,那将是更好的选择,但如果我们只是想要一个保证至少为64位的大数,那么unsigned long long会更好。 - GManNickG
1
@GMan:或者uint_least64_tcstdint也将出现在C++0x中。 - Steve Jessop
@Steve:哦,是的,我忘记了那个。我改变我的选择为那个。:] - GManNickG

5

问题:如何初始化unsigned long long类型?

答案:使用一个unsigned long long常量!

(将后缀ULL添加到常量中。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接