If we assign an out-of-range value to an object of unsigned type, the result is the remainder of the value modulo the number of values the target type can hold
If we assign an out-of-range value to an object of signed type, the result is undefined.
所以,signed 可以转 unsigned,反之不行
当一个 expression 包含这俩类型时,the int value is converted to unsigned before the addition is done.
当赋值时花括号不允许narrowing conversion
Other Implicit Conversions
Array to Pointer
This conversion is not performed when an array is used with decltype, &, sizeof, typeid and initialize a reference to an array.
a similar pointer conversion happens when we use a function type in an expression.
Changes only a ==low-level const== in its operand. (也就是说,只能用在pointer和reference上) “casts away the const”
⚠️ if the original object is nonconst, then we casts away the const and obtain write access is legal. However, if the underlain is originally a const, the access is undefined.