【发布时间】:2016-04-13 10:22:32
【问题描述】:
我的计算中有一些很长很长的边界常数。现在我有一个奇怪的行为,因为某些条件无效,因为数字被“误解” 第一个输出是我想要使用的数字....在输出中你可以看到 - 符号被删除了,所以我想到了一个下溢,但是当我添加一个 0,所以数字更高,输出是正确的......
我正在使用 Visual Studio 2012
cout<<-2147483648<<endl;
cout<<-2147483649<<endl;
cout<<-21474836480<<endl;
cout<<-21474836490<<endl;
cout<<-214748364800<<endl;
cout<<-214748364900<<endl;
如您所见,在前 2 行中 - 符号已删除
2147483648
2147483647
-21474836480
-21474836490
-214748364800
-214748364900
任何想法这里有什么问题?
【问题讨论】:
-
您的示例甚至无法在 VS2012 中编译。对于这两行,它失败并显示以下错误消息:
error C4146: unary minus operator applied to unsigned type, result still unsigned。
标签: c++ visual-studio long-integer signed