That would cover any integer types of the same size, on any sane computer - but would normally rule out compatibility between floating point and integer types of the same size, and probably also compatibility between pointers and integers. That is all fair enough. Thanks for that explanation. It is reassuring to know that the reason I couldn't find a clear definition in the standard is that there is no clear definition in the standard! It seems an odd omission, given how often phrases like "compatible types" turn up in the standard.