我有一个简单的程序:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
unsigned short a;
cin >> a;
cout << a;
return 0;
}
当我输入大于65535(溢出数字)的数字时,我总是会收到52428作为输出。当我输入一个小于0的数字(一个下溢数字)时,输出将如预期的那样(例如:输入-1将具有输出65535)。
我正在使用Visual Studio 2013 Ultimate,我的 friend 也正在使用Visual Studio 2010编译该程序,我们两者都具有与上述相同的结果。
那么,大于65535的数字(溢出数字)到底是怎么回事?
提前致谢。
您好,我发现另外两个主题可以为您提供帮助:
How does an uninitiliazed variable get a garbage value?
garbage values in C/C++
谢谢大家回答我的问题。
最佳答案
52428是十六进制的CCCC;该值可能正在使用调试内存。如果编译并使用Release配置运行,则可能会得到不同的结果,因为它实际上是未初始化的。