...
Non-Compliant Code Example
The header <stdiostdio.h>h defines the BUFSIZ macro which expands to an integer constant expression that is the size of the buffer used by the setbuf() function. This non-compliant code example defeats the purpose of defining BUFSIZ as a constant by assuming its value in the following expression:
...
The programmer's assumption underlying this code is that "everyone knows that BUFSIZ equals 512," and right-shifting nine bits is the same (for positive numbers) as dividing by 512. However, if BUFSIZ changes to 1024 on some systems, modifications are difficult and error - prone.
Compliant Solution
This compliant solution uses the identifier assigned to the constant value in the expression.
...
Hardwiring constants renders code potentially nonportable; in fact, it will produce unexpected behavior under any circumstances in which the constant changes.
...