我怎样才能在没有警告的情况下设置一个很长的长号码?
现在,我有我怎样才能在没有警告的情况下设置一个很长的长号码?
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