2011-03-22 79 views
0
class Program 
{ 
    static void Main(string[] args) 
    { 
     Int64 a = Int64.MaxValue; 
     Int64 b= Int64.MinValue; 

     try 
     { 
      checked 
      { 
      Int64 m = a * b; 

      } 
     } 
     catch (OverflowException ex) 
     { 
      Console.WriteLine("over flow exception"); 
      Console.Read(); 
     } 
    } 
} 

如果變量聲明爲int,我得到編譯錯誤,轉換從requreid從int到long。別名爲int32,int64

  1. 爲什麼我得到這個錯誤,雖然我使用int。
  2. 什麼別名Int32Int64
  3. 當使用Int32Int64,它依賴於操作系統?
+0

可能重複的[Int32與Int64與C#中的Int](http://stackoverflow.com/questions/1680111/int32-vs-int64-vs-int-in-c) – LukeH 2011-03-22 16:30:53

回答

5

Int32對應於intInt64對應於long。對於大多數一般用途,您可以使用32位整數;但是,如果您需要非常大的數字,請使用整數(64位)long

當指定Int64.MaxValueint,你是隱式轉換longInt64)到intInt32),這是行不通的。此外,該值太大而不適合32位整數。

1
Int32 = int 
Int64 = long 

CTS實現保證類型在任何CPU/OS上都可移植。

0

什麼是別名的Int32和Int64的

Int32別名是intInt64的別名是long

何時使用Int32和Int64,它是否依賴於操作系統?

是否使用Int32或Int64取決於應用程序(範圍,符號要求)。不,它的確不是不是取決於操作系統。只要涉及.NET框架,int將始終是4字節長的Int32。另請注意,別名是編譯器的一個特性。因此,當您使用C#編程時,long確實有意義,但考慮VB.NET開發人員不需要像Array.LongLength這樣的屬性名稱,因爲long對他們沒有意義。

0

1)如果你在任何地方使用int,你都不應該得到這個錯誤。以下工作精細:

using System; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     int a = int.MaxValue; 
     int b = int.MinValue; 

     try 
     { 
      checked 
      { 
       int m = a * b; 

      } 
     } 
     catch (OverflowException ex) 
     { 
      Console.WriteLine("over flow exception"); 
      Console.Read(); 

     } 
    } 
} 

2)Int32使用int別名,Int64使用long

3)這不是特定平臺鋸齒,但由C#規範而定義的。在所有平臺上都是一樣的。如果需要32位整數,請使用Int32(或int),如果需要64位整數,則使用Int64(或long)。這更多的是邏輯/算法決策,而不是與平臺相關的決策。

+0

當程序運行時,我會得到運行時錯誤。如果make a和b有常量,我會得到編譯錯誤。爲什麼有這樣的差異 – Raghav 2011-03-22 16:49:04

+0

@Raghav:編譯器可以幫助常量 - 沒有常量,你會得到一個運行時錯誤。編譯器可以幫助它,但不能總是做所有事情。將編譯器錯誤想象爲「有用的添加」 – 2011-03-22 17:10:13

0

System.Int32System.Int64是由CLI標準(ECMA-335)定義的類型。它們基本上是32位和64位整數類型的CLR /框架版本,並且保證是可移植的。

有些語言,如C#,定義別名那些類型 - C#定義int是相同System.Int32long是相同System.Int64 - 因此那些類型也是便攜式的。

至於你使用哪種語言(至少CLR版本與語言版本),它大體上是風格問題,特別是如果你只使用一種語言。我個人更喜歡在可能的情況下爲CLR類型使用語言指定的別名。

相關問題