繁体   English   中英

隐式转换为 size_t?

[英]Implicit cast to size_t?

我想知道 - 当我们用某个值初始化 unsigned size_t 时,C++ 会进行隐式转换吗? 像这样:

size_t value = 100;

将“u”字面值添加到值中以防止这种转换是否有意义,就像这样?

size_t value = 100u;

当我们用某个值初始化 unsigned size_t 时,C++ 会进行隐式转换吗? 像这样:

 size_t value = 100;

是的。 std::size_t是一个(别名)integer 类型。 integer 类型可以隐式转换为所有其他 integer 类型。

将“u”字面值添加到值中以防止这种转换是否有意义,就像这样?

由于std::size_t不一定(也不通常) unsigned int ,因此仍然可能存在带有u文字后缀的隐式转换。 例如,它可能是unsigned long intunsigned long long int 有一个标准建议为std::size_t别名添加 integer 文字,但目前不存在。

在此示例中,使用匹配的文字并不重要,只要文字的类型可以表示所讨论的值,并且只要文字值不超过初始化类型的范围即可。 即使是最小的 integer 类型也可以表示 100。选择在很大程度上取决于品味。


请注意,“隐式转换”在术语上是矛盾的。 Cast 是一种显式转换。

暂无
暂无

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

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