In the X64 environment, int and long remain 32-bit types. Pointers, on the other hand, use 64 bits. This discrepancy accounts for the major difference between IA-32 and X64 programming: because pointers are not the same size as int and long data types, your code can no longer reliably use assignments between pointers and int or long types.
The following table describes differences between these types in 32-bit and 64-bit Windows.
Platform (Architecture) | Data Model | int | long | pointer |
---|---|---|---|---|
Win32 (IA-32) | ILP32 | 32 | 32 | 32 |
Win64 (X64) | IL32P64 | 32 | 32 | 64 |