int和System::Int32之间的区别 我用C++编写.NET框架的应用程序时,我想问一个问题。
当我完全为“for循环”编写代码时,我总是使用这种编码方式: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( 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.
}