int везде 4 байта. А вот long на OSX 4 байта в 32-бит но 8 байт в 64-бит.
В пункте 3.9.1.2 Стандарта сказано следующее:
There are four signed integer types: “signed char”, “short int”, “int”, and “long int.”
In this list, each type provides at least as much storage as those preceding it in the list.
Plain ints have the natural size suggested by the architecture of the execution environment;
the other signed integer types are provided to meet special needs.
в пункте 5.3.1 сказано
The sizeof operator yields the number of bytes in the object representation of its operand.
The operand is either an expression, which is not evaluated, or a parenthesized type-id.
The sizeof operator shall not be applied to an expression that has function or incomplete type,
or to an enumeration type before all its enumerators have been declared,
or to the parenthesized name of such types, or to an lvalue that designates a bit-field.
sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;
the result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined.
[Note: in particular, sizeof(bool) and sizeof(wchar_t) are implementation-defined]
[Note: See 1.7 for the definition of byte and 3.9 for the definition of object representation. ]
Поэтому правильнее будет сказать - "int, обычно, 4 байта"