【发布时间】:2021-07-14 10:43:19
【问题描述】:
我在运行以下 C++ 代码时得到了一个非常奇怪的结果:
#include <iostream>
using namespace std;
int main()
{
int c[]={49,46,48,46,51};
int p=0;
for(int i=0;i<5;i++)
p =p*100+c[i];
cout << "Hello World! p=" <<p<< endl;
return 0;
}
世界你好! p=651517355
但是,预期的结果是 4946484651。
即使我将数据类型更改为长整数,也会给出同样的错误结果。
我的环境是,
windows 10, Qt Creator 4.14.1 (Qt 5.15.2 MSVC2019 64bit)
cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\aa.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DQT_QML_DEBUG -I..\aa -I. -I..\..\..\Qt\5.14.0\msvc2017\mkspecs\win32-msvc -Fodebug\ @C:\Users\guest\AppData\Local\Temp\main.obj.20080.15.jom
main.cpp
【问题讨论】:
-
4296596394对于典型的 32 位整数来说太多了,你会得到一个整数溢出。long long p可能会做你想做的事(它的范围大约是 10^18) -
不确定时可以通过
std::numeric_limits<T>::max()查看范围。
标签: c++ windows-10 integer visual-studio-2019