2016-04-14 43 views
-1

我的問題涉及到下面的代碼,它是一個經典的教科書式的範例:當輸入變量0,1,2和3執行此代碼時會發生什麼?

#include <iostream> 
#include <limits> 

int main() 
{ 
    int min{std::numeric_limits<int>::max()}; ///These two limits 
    int max{std::numeric_limits<int>::min()}; 

    bool any(false); 
    int x; 

    while (std::cin >> x) 
    { 
     any=true; 
     if (x<min) 
      min = x; 

     if (x) 
      max=x; 
    } 

    if (any) 
     std::cout << "min = " << "\nmax = " max << '\n'; 
} 

而且,我很好奇,想知道如何訪問涉及兩個限制我指的是我的評論上面的文檔。這是否會包含在C標準庫中?

或者它會在輸入/輸出流庫的文檔中找到?在cplusplus.com的限制庫中,開發人員提到min = 0,但是最大限度是如何定義的?如何定義最大值和int可以在任何C++程序中具有哪些參數?

+2

獲取更好的[參考](http://en.cppreference.com/w/cpp/types/numeric_limits)。雖然,沒有什麼不清楚[這裏](http://www.cplusplus.com/reference/limits/numeric_limits/)。 – LogicStuff

+0

你認爲這意味着什麼?你試圖弄清楚了嗎? – rsjaffe

+1

分鐘是最大值,最大值是最小值。讓我想起我的學生時代,當時最喜歡的笑話之一是'#define ij/*快樂調試* /' – SergeyA

回答

0

http://en.cppreference.com/w/cpp/types/numeric_limits http://www.cplusplus.com/reference/limits/numeric_limits/

這兩個鏈接指向你約在C++標準庫的數量限制文檔。

「min()」不是「零」,它是可能的最小值,取決於您使用的類型。對於int,該值是最低的負數,INT_MIN(可能是–2147483648),而不是零。然而,對於unsigned類型,它是零。 對於某些類型,可能意味着所有位均設置爲0,從而爲您提供儘可能最低的值。對於其他類型,並不那麼簡單。

「max()」是類型可以存儲的最大可能值。對於某些數據類型,它僅表示所有位都設置爲1,爲您提供最高可能值。對於其他類型,它並不那麼簡單,但結果始終是該類型可以存儲/表示的儘可能高的值。 對於int,最高可能值爲INT_MAX,最有可能爲2147483647

通過您的代碼並準確地解釋發生了什麼,一步一步,爲不同的輸入值感覺超出範圍,在這裏,聽起來像我正在爲你做功課。你應該嘗試一下代碼,看看會發生什麼。

+0

所以如果我理解正確,這個程序會檢查用戶輸入的數字是否適合C++整型變量 –

+0

@AnisAliKhan不,它沒有這樣做。正如它所寫,這是不可能的。輸入變量存儲在一個'int'中,所以如果它不適合,你會得到截斷,並且你不會知道它不適合int。這個程序基本上是完全廢話。 – antiHUMAN

相關問題