隐式转换会丢失信息吗?

csg*_*guy 4 c++ implicit-conversion

根据https://www.learncpp.com/cpp-tutorial/44-implicit-type-conversion-coercion/

“关于促销活动,要记住的重要一点是,促销活动始终是安全的,不会造成数据丢失。”

但是https://www.geeksforgeeks.org/type-conversion-in-c/指出:

“隐式转换可能会丢失信息,符号可能会丢失(将符号隐式转换为无符号),并且会发生溢出(将long long隐式转换为float时)。”

我知道隐式转换是安全的,但我看不出不会造成数据丢失。哪个正确?

Nat*_*ica 11

第一篇文章讨论促销,这是一种隐式转换的特定类型。还有其他类型的转化,这些转化也是隐式转化,但不是促销。升级是隐式转换的一种特定类型,它不会丢失信息,因为您总是要使用更广泛的类型,即一种类型,在这种类型中,要升级的类型表示的所有值都可以由提升的类型表示(int -> long long例如)

其他隐式转换包括:从有符号转换为无符号,缩小转换,将浮点数转换为整数转换。与促销活动不同,这些转换可能会丢失信息。