C ++中的数字溢出(Visual Studio 2013)

ntvy95

我有一个简单的程序:

#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,我的朋友也正在使用Visual Studio 2010编译该程序,我们两者都具有与上述相同的结果。

那么,大于65535的数字(溢出数字)到底是怎么回事?

提前致谢。


您好,我发现另外两个主题可以为您提供帮助:

未初始化的变量如何获得垃圾值?

C / C ++中的垃圾值

谢谢大家回答我的问题。

刚果

52428是十六进制的CCCC;该值可能正在使用调试内存。如果编译并使用Release配置运行,则可能会得到不同的结果,因为它实际上是未初始化的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章