我想知道-当我们用某个值初始化无符号size_t时,C++是否执行隐式强制转换?像这样:
size_t value = 100;
在值中添加"u"文字以防止这种强制转换,像这样有意义吗?
size_t value = 100u;
当我们用一些价值像这样:
size_t value = 100;
是。std::size_t
是一个(整数的别名(类型。整数类型可以隐式转换为所有其他整数类型。
在值中添加'u'文字以防止这种强制转换有意义吗?
由于std::size_t
不一定(也不典型(是unsigned int
,因此仍然可能存在带有u
文字后缀的隐式转换。它可以是例如unsigned long int
或unsigned long long int
。有一个为std::size_t
别名添加整数文本的标准建议,但目前还没有。
在本例中,使用匹配的文字并不重要,只要文字的类型可以表示有问题的值,并且文字值不超过初始化类型的界限。即使是最小的整数类型也可以表示100。选择在很大程度上取决于品味。
注意;隐式铸造;在术语上是矛盾的。强制转换是一种显式转换。