Page 135 - C-Language
P. 135
The header <float.h> defines various limits for floating point operations.
Floating point arithmetic is implementation defined. However, most modern platforms (arm, x86,
x86_64, MIPS) use IEEE 754 floating point operations.
C also has three optional complex floating point types that are derived from the above.
Interpreting Declarations
A distinctive syntactic peculiarity of C is that declarations mirror the use of the declared object as it
would be in a normal expression.
The following set of operators with identical precedence and associativity are reused in
declarators, namely:
• the unary * "dereference" operator which denotes a pointer;
• the binary [] "array subscription" operator which denotes an array;
• the (1+n)-ary () "function call" operator which denotes a function;
• the () grouping parentheses which override the precedence and associativity of the rest of
the listed operators.
The above three operators have the following precedence and associativity:
Operator Relative Precedence Associativity
[] (array subscription) 1 Left-to-right
() (function call) 1 Left-to-right
* (dereference) 2 Right-to-left
When interpreting declarations, one has to start from the identifier outwards and apply the
adjacent operators in the correct order as per the above table. Each application of an operator can
be substituted with the following English words:
Expression Interpretation
thing[X] an array of size X of...
thing(t1, t2, t3) a function taking t1, t2, t3 and returning...
*thing a pointer to...
It follows that the beginning of the English interpretation will always start with the identifier and will
end with the type that stands on the left-hand side of the declaration.
Examples
https://riptutorial.com/ 111

