I think which particular byte the address points at is [compiler] implementation-dependent; but any rational compiler writer will match the conventions of the processor that the code runs on.
If you're compiling code for a processor that expects the address to point at the byte with the lowest address regardless of whether that's the LSB or MSB then that's probably what the compiler will do.
If you're compiling code for a processor that expects the address to point at the LSB (or MSB) regardless of whether that's the highest of lowest address then that's probably what the compiler will do.
From C: A Reference Manual by Harbison & Steele (emphasis added)...
"The address of a larger piece of storage -- one used to hold an integer or a floating-point number -- is typically the same as the address of the first character in the larger unit. The "first" character is the one with the lowest address."
A further complication arises if the processor has a segmented memory architecture (e.g,
far and
near pointers) or if an MMU is performing address translation. (Although this complication won't change which is the "first" character in the larger unit.)