2016-07-22 6 views
0

整数に割り当てられる値がintの最大値(2,147,483,647)より大きい場合があります。それはエラーを投げることはありません、ちょうど整数に小さい番号を割り当てます。この数字はどのように計算されますか?割り当てられた値がC#のint max値より大きい場合、整数値はどのように決定されますか?

これはintをlongに変更することで修正されましたが、もっと小さな値がどのように計算され、intに割り当てられるのか興味があります。

+2

int.MaxValue + 1 == int.MinValue –

+0

'Int16.MaxValue OR Int32.MaxValueをOR Int64.MaxValue' – Sherlock

+0

HTTPに等しいです。 //stackoverflow.com/questions/33098378/why-2-why-not-3-or-1/33098714#33098714 –

答えて

0
int.MaxValue: 2,147,483,647 

ロジックinループは、見つかった最も低い番号を追跡しています。あなたはint.MaxValueを使って本当に高い値を開始することができ、より低い数値が有効になります。

サンプルコード:

using System; 

class Program 
{ 
static void Main() 
{ 
int[] integerArray = new int[] 
{ 
    10000, 
    600, 
    1, 
    5, 
    7, 
    3, 
    1492 
}; 

// This will track the lowest number found 
int lowestFound = int.MaxValue; 

foreach (int i in integerArray) 
{ 
    // By using int.MaxValue as the initial value, 
    // this check will usually succeed. 
    if (lowestFound > i) 
    { 
    lowestFound = i; 
    Console.WriteLine(lowestFound); 
    } 
} 
} 
} 

出力

10000 
600 
1 
2

INT手段は32ビットの数値が含まれ、それが0または1(最初の桁手段の32進数字を有し、プラス0とマイナス用1のために)、例えば:あなたはint.MaxValueをインクリメントしますのであれば

1 in decimal == 0000 0000 0000 0000 0000 0000 0000 0001 as int32 binary 
2 147 483 647 == 0111 1111 1111 1111 1111 1111 1111 1111 

、あなたは次のRESUを取得しますLT:

2 147 483 648 == 1000 0000 0000 0000 0000 0000 0000 0000 

two's complement表現では、この2進数int.MinValueまたは-2 147 483 648

関連する問題