![](/img/trans.png)
[英]Rendering the Kinect output with GLUT in Visual Studio 2013 C++ (Stack overflow)
[英]overflow numbers in C++ (Visual Studio 2013)
我有一個簡單的程序:
#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的數字(溢出數字)到底是怎么回事?
提前致謝。
您好,我發現另外兩個主題可以為您提供幫助:
謝謝大家回答我的問題。
52428是十六進制的CCCC; 該值可能正在使用調試內存。 如果編譯並使用Release配置運行,則可能會得到不同的結果,因為它實際上是未初始化的。
最好通過以下方式檢查輸入的正確性:
std::cin >> a;
if (std::cin.fail())
std::cout << "Error!\n";
else
std::cout << "Valid.\n";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.