我想知道 - 当我们用某个值初始化 unsigned size_t 时,C++ 是否会进行隐式转换?像这样:
size_t value = 100;
Run Code Online (Sandbox Code Playgroud)
将“u”文字添加到值中以防止这种转换是否有意义,就像这样?
size_t value = 100u;
Run Code Online (Sandbox Code Playgroud)
当我们用某个值初始化 unsigned size_t 时,C++ 是否会进行隐式转换?像这样:
Run Code Online (Sandbox Code Playgroud)size_t value = 100;
是的。std::size_t是整数类型(的别名)。整数类型可以隐式转换为所有其他整数类型。
将“u”文字添加到值中以防止这种转换是否有意义,就像这样?
仍然可能存在带有文字后缀的隐式转换u,因为std::size_tis 不一定(也不通常)unsigned int。例如,它可能是unsigned long int或unsigned long long int。有一个标准建议为std::size_t别名添加整数文字,但目前尚不存在。
在此示例中,使用匹配的文字并不重要,只要文字的类型可以表示所讨论的值,并且只要文字值不超出初始化类型的范围。即使是最小的整数类型也可以表示 100。选择很大程度上取决于个人喜好。
请注意,“隐式转换”是一个矛盾的术语。Cast 是显式转换。
| 归档时间: |
|
| 查看次数: |
954 次 |
| 最近记录: |