我最近尝试使用Project Euler problem 3解决codepad.org,我注意到一些奇怪的事
由于键盘使用了标记-pedantic-errors
,我无法使用long long
来存储我的号码,但我注意到我仍然可以使用uint64_t
。
这里开始我的问题。
虽然我可以将变量定义为uint64_t
,但我没有很好的方法来实际分配值
我可以用丑陋的方式分配价值(避开你的眼睛):
// This is very ugly code:
uint64_t s = 600851;
s *= 1000000;
s += 475143;
cout << "s = " << s << endl;
但是我不能这么做直接的任务:
// This gives me errors:
uint64_t s = 600851475143ULL;
可能首先将右侧解释为long long
。
那么在这种情况下如何实际分配工作呢?
它只是一个漏洞,我可以访问该类型,但不分配任何东西?
如果是这样的话会有什么好的解决方法吗?