根据https://www.learncpp.com/cpp-tutorial/44-implicit-type-conversion-coercion/
“重要的是要记住,晋升总是安全的,不会有任何数据丢失。”
然而,https://www.geeksforgeeks.org/type-conversion-in-c/指出:
隐式转换可能会丢失信息,符号可能会丢失(当签名被隐式转换为无符号时),并且可能会发生溢出(当long被隐式转换为float时)。
我知道隐式转换是安全的,但我不认为数据丢失会导致什么结果。哪个是准确的?
发布于 2019-07-30 18:41:22
第一篇文章讨论晋升,这是一种特定的隐式转换。还有其他类型的转换,也是隐式转换,但不是晋升。提升是一种特定类型的隐式转换,它不会丢失信息,因为您总是要转到一个更广泛的类型,也就是说,被提升类型所表示的所有值都可以由提升类型表示(例如,int -> long long
)。
其他隐式转换包括:从有符号转换到无符号转换、收缩转换、从浮点转换到整数转换。这些转换可能会丢失与晋升不同的信息。
https://stackoverflow.com/questions/57278113
复制相似问题