ved*_*eda 5 c++ language-lawyer c++11
给定一个具有唯一(std::uint64_t
类型)整数的向量,如果我将(std::uint64_t
类型)的向量转换为(std::int64_t
类型)整数的向量,是否可以保证它是唯一的?
像这样铸造
std::vector<std::uint64_t> unsignedVec;
std::vector<std::int64_t> signedVec( unsignedVec.begin(), unsignedVec.end() );
Run Code Online (Sandbox Code Playgroud)
是否可以保证是唯一的?
形式上它是实现定义的,但是在任何明智的平台上它都应该是唯一的。
(特别是如果提供的话,int64_t
必须是 2的补码。)
从C ++ 20开始,它必须是唯一的。
https://en.cppreference.com/w/cpp/language/implicit_conversion#Numeric_conversions
如果目标类型是带符号的,那么如果源整数可以用目标类型表示,则值不会更改。[否则结果是实现定义的(直到C ++ 20)] [目标类型的唯一值等于模2 n的源值 ,其中n是用于表示目标类型的位数。(自C ++ 20起)。
归档时间: |
|
查看次数: |
220 次 |
最近记录: |