![](/img/trans.png)
[英]Why uses implicit_cast<size_t>(int) instead of static_cast<size_t>(int)?
[英]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 int
或unsigned long long int
。 有一个标准建议为std::size_t
别名添加 integer 文字,但目前不存在。
在此示例中,使用匹配的文字并不重要,只要文字的类型可以表示所讨论的值,并且只要文字值不超过初始化类型的范围即可。 即使是最小的 integer 类型也可以表示 100。选择在很大程度上取决于品味。
请注意,“隐式转换”在术语上是矛盾的。 Cast 是一种显式转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.