C# int32、int64的别名
如果变量被声明为int,我将得到编译错误,从int到long的转换是requreidC# int32、int64的别名,c#,C#,如果变量被声明为int,我将得到编译错误,从int到long的转换是requreid 为什么我在使用int时会出现这个错误 别名是什么Int32和Int64 何时使用Int32和Int64,是否取决于操作系统 Int32对应于int,Int64对应于long。对于大多数一般用途,您可以使用32位整数;但是,如果需要非常大的数字,请使用long整数(64位) 当您将Int64.MaxValue分配给int时,您将long(Int64)隐式转换为int(Int32),但该转换无效。此外,该值太大,无
Int32
和Int64
Int32
和Int64
,是否取决于操作系统Int32
对应于int
,Int64
对应于long
。对于大多数一般用途,您可以使用32位整数;但是,如果需要非常大的数字,请使用long
整数(64位)
当您将
Int64.MaxValue
分配给int
时,您将long
(Int64
)隐式转换为int
(Int32
),但该转换无效。此外,该值太大,无法放入32位整数。Int32
对应于int
,Int64
对应于long
。对于大多数一般用途,您可以使用32位整数;但是,如果需要非常大的数字,请使用long
整数(64位)
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();
}
}
}
当您将Int64.MaxValue
分配给int
时,您将long
(Int64
)隐式转换为int
(Int32
),但该转换无效。此外,该值太大,无法放入32位整数中
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();
}
}
}
CTS实现保证这些类型在任何CPU/OS上都是可移植的
CTS实现保证类型在任何CPU/O上都是可移植的。int是int32,long是int64
int是int32,long是int64 别名Int32和Int64是什么
Int32
的别名是int
。Int64
的别名是long
何时使用Int32和Int64,是否取决于操作系统
使用Int32还是Int64取决于应用程序(范围、符号要求)。不,它不依赖于操作系统<就.NET framework而言,code>int将始终是4字节长的Int32。还请注意,别名是编译器的一项功能。所以,<>代码>长< /C>在C语言编程时是有意义的,但是考虑VB.NET开发人员,他们不需要像“代码>长< /代码>之类的属性名称对它们没有意义。
别名Int32和Int64是什么
Int32
的别名是int
。Int64
的别名是long
何时使用Int32和Int64,是否取决于操作系统
使用Int32还是Int64取决于应用程序(范围、符号要求)。不,它不依赖于操作系统<就.NET framework而言,code>int将始终是4字节长的Int32。还请注意,别名是编译器的一项功能。因此,<>代码>长< /C>在C语言编程时是有意义的,但是考虑VB.NET开发人员,他们不需要像“代码>长< /代码>之类的属性名称对它们没有意义。 < P > 1)如果使用It到处都不应该得到这个错误。以下工作很好:
Int32 = int
Int64 = long
2) Int32
使用int
别名,Int64
使用long
别名
3) 这不是特定于平台的,而是由C#规范定义的。在所有平台上都是一样的。需要32位整数时使用Int32
(或int
),需要64位整数时使用Int64
(或long
)。这更多的是一个逻辑/算法决定,而不是一个与平台相关的决定。1)如果在任何地方都使用int,就不应该出现此错误。以下工作很好:
Int32 = int
Int64 = long
2) Int32
使用int
别名,Int64
使用long
别名
3) 这不是特定于平台的,而是由C#规范定义的。在所有平台上都是一样的。需要32位整数时使用
Int32
(或int
),需要64位整数时使用Int64
(或long
)。这更多的是一种逻辑/算法决策,而不是与平台相关的决策。System.Int32
和System.Int64
是CLI标准(ECMA-335)定义的类型。它们基本上是32位和64位整数类型的CLR/framework版本,并且保证是可移植的
有些语言,如C#,为这些类型定义别名——C#定义int
与System.Int32
和long
与System.Int64
相同,因此这些类型也是可移植的
至于您使用哪种语言(至少是CLR版本还是语言版本),这大体上是一个风格问题,特别是如果您只使用一种语言。我个人喜欢在可能的情况下为CLR类型使用语言指定的别名。
System.Int32
和System.Int64
是CLI标准(ECMA-335)定义的类型。它们基本上是32位和64位整数类型的CLR/framework版本,并且保证是可移植的
有些语言,如C#,为这些类型定义别名——C#定义int
与System.Int32
和long
与System.Int64
相同,因此这些类型也是可移植的
至于您使用哪种语言(至少是CLR版本还是语言版本),这大体上是一个风格问题,特别是如果您只使用一种语言。我个人更喜欢在可能的情况下为CLR类型使用语言指定的别名。程序运行时,我会得到运行时错误。如果make a和b有常数,我将得到编译错误。为什么会这样difference@Raghav:编译器可以帮助处理常量-如果没有常量,则会出现运行时错误。编译器在可能的情况下提供帮助,但不能总是做所有事情。将编译器错误视为“helpf”