On 32-bit platforms, int and long usually occupy the same size. Programmers use these types interchangeably when they need a 32-bit integer. However, on 64-bit architectures, long is often represented as a 64-bit integer, whereas int occupies 32 bits. In the next few years, many platforms and processors will switch to a 64-bit word size. To avoid future maintenance headaches and compatibility problems, use plain int or an equivalent 32-bit typedef when you need a 32-bit datatype. If you really need a 64-bit sized integer, use either long long or an equivalent nonstandard type such as __int64. These types have explicit sizes so they are more portable than plain long.