a + b + c
can be evaluated as (a + b) + c, a + (b + c), (a + c) + b, (c + b) + a, etc. Parentheses control operator precedence, parentheses do not control order of evaluation.
If the operands of an associative operator + or * are floating point values, the expression is not reordered.
static assert(int.sizeof == (int*).sizeof);
32 bit processors and operating systems are still out there. With that in mind:
Endianness refers to the order in which multibyte types are stored. The two main orders are big endian and little endian. The compiler predefines the version identifier BigEndian or LittleEndian depending on the order of the target system. The x86 systems are all little endian.
The times when endianness matters are:
System specific code is handled by isolating the differences into separate modules. At compile time, the correct system specific module is imported.
Minor differences can be handled by constant defined in a system specific import, and then using that constant in an IfStatement or StaticIfStatement.
objc_interface, Interfacing to Objective-C, entity, Named Character Entities
It's good software engineering practice to minimize gratuitous portability problems in the code. Techniques to minimize potential portability problems are: