int和System::Int32之间的区别 我用C++编写.NET框架的应用程序时,我想问一个问题。

int和System::Int32之间的区别 我用C++编写.NET框架的应用程序时,我想问一个问题。,.net,c++-cli,int,int32,.net,C++ Cli,Int,Int32,当我完全为“for循环”编写代码时,我总是使用这种编码方式: for( int i=0; i<somevalue; ++i ) { // Some code goes here. } for(int i=0;i唯一的区别可能是关于int和System::Int32支持的值的范围 System::Int32使32位对阅读代码的人来说更为明确。在只需要“整数”的地方应该使用int,在大小很重要(密码、结构)的地方应该使用System::Int32,这样读者就可以在保持相同的大小的同时

当我完全为“for循环”编写代码时,我总是使用这种编码方式:

for( int i=0; i<somevalue; ++i ) {
    // Some code goes here.
}

for(int i=0;i唯一的区别可能是关于
int
System::Int32
支持的值的范围

System::Int32
使32位对阅读代码的人来说更为明确。在只需要“整数”的地方应该使用
int
,在大小很重要(密码、结构)的地方应该使用
System::Int32
,这样读者就可以在保持相同的大小的同时清除它


使用<代码> INT/C>或<代码>系统:INT32 < /C> >代码是完全相同的:差异是一个明确的可读性或代码外观。< /P> < P> >其中一个只是另一个别名。在C中,

< P> <代码> INT/C> >与<代码>系统。INT32 < /C> > .NET.< /P> < P>显然,不像C和常规C++,C.A A。nd C++/CLI的
int
类型的长度始终为32位

这一点得到了证实,因此答案是这两者之间没有区别,只是
int
System::int32
打字速度要快得多(第50页):

基本类型映射到 对应的值类类型 由执行机构提供,如 如下:

  • signed char
    映射到
    System::SByte
  • 无符号字符
    映射到
    系统::字节
  • 如果一个普通的
    char
    被签名,
    char
    映射到
    System::SByte
    ;否则,它 映射到
    System::Byte
  • 对于所有其他基本类型,映射是实现定义的
<> > <强>不同于C++,其中<代码> int >代码>被具体定义为<代码>系统INT32 < /C> >。在C++ +CLI中,与ISOC++一样,<代码> int <代码>具有“执行环境的架构所建议的自然大小”,并且只能保证至少有16位。 然而,实际上,.NET不能在16位系统上运行,因此可以安全地假定32位
int
s


<> >但请注意<>代码>长< /> >:VisualC++将其定义为32位,即“强>不<强”。与C++代码相同。t32使32位对那些阅读代码的人来说更加明确。

@ViTo:我不确定C++/CLI,但我知道在C中,
int
Int32
是完全相同的类型:
int
只是一种表示
System.Int32
的语言结构。是的,这意味着它们是相同的。如果int比System::I快nt32我必须始终使用int。我需要的是System::Int32?你误解了我。
int
System::Int32
短,这意味着打字时间更短。:)除此之外,它们只是同一事物的不同名称。@ViTo Brothers Apoyan:你读过修改后的答案吗?我不认为有什么不对。@维托兄弟ApoYAN:根本没有区别。我认为 INT/COM>比“代码>系统:更便携和可扩展::INT32/<代码>。随着编译器版本的更新和硬件的进步,
int
的大小可能会因相同代码的较新版本(需要重新编译)而改变。如果您指定
System::Int32
,它将对该变量的大小和范围进行硬编码。但问题不在C中。
for( System::Int32 i=0; i<somevalue; ++i ) {
    // Some code goes here.
}