https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61502
--- Comment #9 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- On Tue, 21 Oct 2014, Keith.S.Thompson at gmail dot com wrote: > Are you saying it's possible that y immediately follows x in the > address space when that line of output is printed, and that y *doesn't* > immediately follow x in the address space when "inconsistent behavior:" > is printed? Yes. > If so, can you describe what the word "follows" means in this context? "follows" is a binary relation with no constraints except when two objects are part of the same declared or allocated larger object. If part of the same declared or allocated larger object, it means that the bytes of the latter object immediately follow the bytes of the former object within the sequence of bytes making up the representation of the larger object (but this does *not* mean that it is necessarily valid to derive pointers to one of the smaller objects from pointers to the other, unless you are very careful about what sequences of conversions and arithmetic are involved; many cases of pointer conversions and arithmetic are less fully defined than one might naively expect, and the question of which of multiple possible objects is relevant in a particular context is one of the more poorly defined areas of C).