我怎样才能在没有警告的情况下设置一个很长的长号码?

现在,我有我怎样才能在没有警告的情况下设置一个很长的长号码?

long long x = 1 << 60; 

cout << x << endl;

,我知道,很长很长的范围可以是一路攀升至2^64,但由于某些原因,当我执行一段代码,它给了我一个警告,说“left shift count >= width of type [-Wshift-count-overflow].

另外,0被打印到屏幕上,这显然不是我想要的。

我试图把文字“LL”之后,但我不知道我应该把它:

long long x = (1 << 60)ll; 

long long x = (1 << 60ll);

和他们没有工作

任何人都可以请告诉我如何解决这个问题?提前致谢!

回答:

这是一个常见的错误期待这个表达式:

long long x = 1 << 60; 

这种类型的左侧会影响右侧的计算。它不是,1 << 60的结果转换为左边的类型,但它不影响1 << 60本身的计算。所以,正确的解决办法是改变的1类型:

long long x = static_cast<long long >(1) << 60; 

long long x = 1LL << 60; 

甚至

auto x = 1LL << 60; 

以上是 我怎样才能在没有警告的情况下设置一个很长的长号码? 的全部内容, 来源链接: utcz.com/qa/267259.html

回到顶部