2011-03-22 43 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类型使用语言指定的别名。

相关问题