簡體   English   中英

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

[英]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的數字(溢出數字)到底是怎么回事?

提前致謝。


您好,我發現另外兩個主題可以為您提供幫助:

未初始化的變量如何獲得垃圾值?

C / C ++中的垃圾值

謝謝大家回答我的問題。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM