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,我收到编译错误,转换是从int到long的requreid。
Int32
和Int64
Int32
和Int64
,是否依赖于操作系统?答案 0 :(得分:5)
Int32
对应int
,Int64
对应long
。对于大多数一般用途,您可以使用32位整数;但是,如果您需要非常大的数字,请使用long
整数(64位)。
当您将Int64.MaxValue
分配给int
时,您隐含地将long
(Int64
)转换为int
(Int32
),这不起作用。此外,该值太大而不适合32位整数。
答案 1 :(得分:1)
Int32 = int
Int64 = long
CTS实现保证了在任何CPU / OS上都可以移植的类型。
答案 2 :(得分:1)
int是int32,long是int64。
http://msdn.microsoft.com/en-us/library/ctetwysk(v=VS.100).aspx
答案 3 :(得分:0)
什么是别名Int32和Int64
Int32
的别名是int
。 Int64
的别名为long
。
何时使用Int32和Int64,它是否依赖于操作系统?
是否使用Int32或Int64取决于应用程序(范围,符号要求)。不,它 NOT 取决于操作系统。只要涉及.NET框架,int
将始终是4字节长的Int32。还请注意别名是编译器的一个功能。因此,当您使用C#进行编程时,long
确实有意义,但考虑那些不需要像Array.LongLength这样的属性名称的VB.NET开发人员,因为long
对他们没有意义。
答案 4 :(得分: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
)。这更像是一种逻辑/算法决策,而不是与平台相关的决策。
答案 5 :(得分:0)
System.Int32
和System.Int64
是CLI标准(ECMA-335)定义的类型。它们基本上是32位和64位整数类型的CLR /框架版本,并且保证可移植。
某些语言(如C#)定义了这些类型的别名 - C#定义int
与System.Int32
相同,long
与System.Int64
相同 - - 因此这些类型也是便携式的。
至于你使用的是什么(CLR版本与语言版本,至少),它基本上是一种风格问题,特别是如果你只使用一种语言。我个人更喜欢在可能的情况下为CLR类型使用语言指定的别名。