首页 > 代码库 > Unintended sign extension

Unintended sign extension

 

 

符号扩展包括:

  1. Integral promotion

    charshort, enumerated type, or bit-field, whether signed or unsigned, can be used in any expression that calls for an int. If an int can hold all possible values of the original type, the value is converted to an int. Otherwise, it is converted to an unsigned int.

  2. Conversion between signed and unsigned integers

    When a negative signed integer is promoted to an unsigned integer of the same or larger type, it is first promoted to the signed equivalent of the larger type, then converted to the unsigned value.

 

修复方法:强转

To fix unintended sign extension problems, you must use explicit casting to achieve the intended results.

 

关于“无意的符号扩展”,这里有篇文章讲的很详细

http://docs.oracle.com/cd/E19253-01/816-5138/convert-2/index.html

 

Unintended sign extension