繁体   English   中英

从size_t转换为unsigned int

[英]converting from size_t to unsigned int

从size_t转换为unsigned int是否有可能导致溢出。

 size_t x  = foo ( ) ;  // foo ( ) returns a value in type size_t
 unsigned int ux = (unsigned int ) x ;

 ux == x  // Is result of that line always 1 ?

语言:C ++

平台:任何

是的,有可能, size_tint不一定具有相同的大小。 具有64位的size_t和32位的int实际上是非常普遍的。

C ++ 11草案N3290在§18.2/ 6中对此进行了说明:

size_t类型是实现定义的无符号整数类型,该类型足够大以包含任何对象的字节大小。

另一方面,仅要求unsigned int能够存储从0到UINT_MAX值(在<climits>定义,并遵循C标准头文件<limits.h> ),只能保证至少为65535(2 16- 1)。

是的,在某些平台上可能会发生溢出。 例如,可以将size_t定义为unsigned long ,它可以轻松地大于unsigned int

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM