A C value is an abstract entity, distinct from the program, its implementation, and the value’s representation during execution. For example, zero has the same effects across C platforms: adding it to x leaves x unchanged, and using it in a control expression selects the false branch. section 5.1.1
Keep a variable’s object (the storage), type, value (its contents), and identifier (its name) distinct. Expressions can also produce intermediate values without storing them in objects. Program data consists of the values of all objects at a given moment. section 2.2 section 5.1.1
double x = 5.0;
double y = 3.0;
...
x = (x * 1.5) - y;
printf("x is %g\n", x);
In this example, x and y supply values to intermediate expressions; the assignment gives x the value 4.5, which printf then outputs. The intermediate results need not themselves be stored or observable. section 5.1
C programs should primarily reason about values rather than concrete representations. Representations can vary across architectures or with type, so focusing on values supports portable reasoning; the compiler translates between values and representations. section 5.0






