Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Assuming that the precision of  signed char is 7 bits, and the precision of unsigned char is 8 bits, this operation is perfectly safe.  However, if the compiler represents the signed and unsigned char types using 31 and 32 bit precision (respectively), the variable uc would need be converted to unsigned int instead of signed int.  As a result of the usual arithmetic conversions, the signed int would then be converted to unsigned and the addition would take place between the two unsigned int values. Also, because uc is equal to UCHAR_MAX which is equal to UINT_MAX in this example, the addition will result in an overflow. The resulting value is then zero-extended to fit into the 64-bit storage allocated by sll.

Addition

Addition in C is between two operands of arithmetic type, or between a pointer to an object type and an integer type. (Incrementing is equivalent to adding one.)

Non-compliant Code Example

...