Consider an expression such as `a + 5`, where `a` has type `unsigned`. The `+` symbol is an operator, and `a` and `5` are its operands. An unsigned integer represents numbers that cannot be negative. section 4.0
C provides several unsigned integer types: `unsigned char`, `unsigned short`, `unsigned int` (also written `unsigned`), `unsigned long`, and `unsigned long long`. Their precision determines the valid range of values. For an n-bit unsigned representation, the largest value follows the pattern 2ⁿ − 1; examples include 65,535, 4,294,967,295, and 18,446,744,073,709,551,615. section 4.0 section 5.2
Narrow integer types do not participate directly in arithmetic. Before an arithmetic expression is considered, they are promoted to `signed int` while preserving their value. The wider unsigned types remain unpromoted. section 5.2
Printing an unsigned value
Use the `%u` conversion for decimal output of an unsigned integer. Use `%x` when the intended meaning is a bit pattern. The conversion and modifier must match the argument type; an inappropriate format specifier or modifier makes the behavior undefined. section 8.3.4
Table 4.1. Value operators The Form column gives the syntactic form of the operation, where @ represents the operator and a and possibly b denote values that serve as operands. For arithmetic and bit operations, the type of the result is a type that reconciles the types of a and b. For some of the operators, the Nick column gives an alternative form of the operator, or lists a combination of operators that has special meaning. Most of the operators and terms will be discussed later. (view table figure)
Use the value-operator table to relate arithmetic syntax, operands, promotions, and result types. section 4.0








