隐式转换为 size_t?
Implicit cast to size_t?
我想知道 - 当我们用某个值初始化 unsigned size_t 时,C++ 是否会进行隐式转换?
像这样:
size_t value = 100;
将 'u' 字面量添加到值中以防止此强制转换有意义吗?
size_t value = 100u;
does C++ do implicit cast when we initialize unsigned size_t with some
value? Like this:
size_t value = 100;
是的。 std::size_t
是一个(别名)整数类型。整数类型可以隐式转换为所有其他整数类型。
And does it make sense to add 'u' literal to the value to prevent this cast, like this?
仍然可能存在带有 u
文字后缀的隐式转换,因为 std::size_t
不一定(通常也不)是 unsigned int
。例如,它可能是 unsigned long int
或 unsigned long long int
。有一个标准建议为 std::size_t
别名添加整数文字,但目前不存在。
在此示例中,使用匹配的文字并不重要,只要文字的类型可以表示所讨论的值,并且只要文字值不超过初始化类型的范围即可.即使是最小的整数类型也可以表示 100。选择很大程度上取决于品味。
请注意,“隐式转换”是一个自相矛盾的术语。 Cast是显式转换。
我想知道 - 当我们用某个值初始化 unsigned size_t 时,C++ 是否会进行隐式转换? 像这样:
size_t value = 100;
将 'u' 字面量添加到值中以防止此强制转换有意义吗?
size_t value = 100u;
does C++ do implicit cast when we initialize unsigned size_t with some value? Like this:
size_t value = 100;
是的。 std::size_t
是一个(别名)整数类型。整数类型可以隐式转换为所有其他整数类型。
And does it make sense to add 'u' literal to the value to prevent this cast, like this?
仍然可能存在带有 u
文字后缀的隐式转换,因为 std::size_t
不一定(通常也不)是 unsigned int
。例如,它可能是 unsigned long int
或 unsigned long long int
。有一个标准建议为 std::size_t
别名添加整数文字,但目前不存在。
在此示例中,使用匹配的文字并不重要,只要文字的类型可以表示所讨论的值,并且只要文字值不超过初始化类型的范围即可.即使是最小的整数类型也可以表示 100。选择很大程度上取决于品味。
请注意,“隐式转换”是一个自相矛盾的术语。 Cast是显式转换。