We know that any numbers that are not equal to 0 are viewed as true in C, so we can write:
int a = 16;
while (a--)
printf(\"%d
It is not explicitly indicated in C11. All language-level operations will return 1 as truthy (and accept any nonzero including NaN as true).
_Bool, then true must be 1 because the standard only require it to hold 0 and 1. (§6.2.5/2). the macro true expands to 1 (§7.18/3)==, !=, <, >, <= and >= return 0 or 1 (§6.5.8/6, §6.5.9/3).!, && and || return 0 or 1 (§6.5.3.3/5, §6.5.13/3, §6.5.14/3)defined expands to 0 or 1 (§6.10.1/1)But all standard library functions e.g. islower just say "nonzero" for truthy (e.g. §7.4.1/1, §7.17.5.1/3, §7.30.2.1/1, §7.30.2.2.1/4).
§6.2.5/2: An object declared as type
_Boolis large enough to store the values 0 and 1.§6.5.5.3/5: The result of the logical negation operator
!is 0 if the value of its operand compares unequal to 0, 1 if the value of its operand compares equal to 0. …§6.5.8/6: Each of the operators
<(less than),>(greater than),<=(less than or equal to), and>=(greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.107) …§6.5.9/3: The
==(equal to) and!=(not equal to) operators are analogous to the relational operators except for their lower precedence.108) Each of the operators yields 1 if the specified relation is true and 0 if it is false. …§6.5.13/3: The
&&operator shall yield 1 if both of its operands compare unequal to 0; …§6.5.14/3: The
||operator shall yield 1 if either of its operands compare unequal to 0; …§6.10.1/1: … it may contain unary operator expressions of the form —
defined identifier— or —defined ( identifier )— which evaluate to 1 if …§7.4.1 (Character classification functions)/1: The functions in this subclause return nonzero (true) if and only if …
§7.18/3: The remaining three macros are suitable for use in
#ifpreprocessing directives. They are —true— which expands to the integer constant 1, …§7.17.5.1/3: The
atomic_is_lock_freegeneric function returns nonzero (true) if and only if the object’s operations are lock-free. …§7.30.2.1 (Wide character classification functions)/1: The functions in this subclause return nonzero (true) if and only if …
§7.30.2.2.1/4: The
iswctypefunction returns nonzero (true) if and only if …