The C (carry) flag is the carry from bit sn-1 (whereas n is the number of bits). This flag is latched from the addition so that it can be utilized by subsequent instructions.
What can the C-flag be useful for? Other than being used in “add-with-carry” (to be discussed), it can also be used to indicate whether the sum of an addition of two unsigned numbers is out-of-range. If the carry flag is set, and the two numbers added are interpreted unsigned, then the sum is out-of-range.
For example, if eax has a value of 0xffffffff (the maximum unsigned value of a 32-bit integer), then the following instruction will set the carry flag:
This is because the sum, 0x100000000 cannot be stored in eax. Instead, eax only stores the least significant 32 bits, which means it has a content of zero. This also means that the Z-flag is also set (see the next subsection).