64ビット
C言語およびC++では、char型を除く組み込みの整数型(short型、int型やlong型)は、最低限のビット数や大小関係しか規定していない。C99規格およびC++11規格では、int32_t や int64_t などビット数を規定した固定幅整数型(<stdint.h>および<cstdint>にて定義される)を追加し、また64ビット以上の値を表現できることが保証されるlong long型を追加した。
C言語等で書かれたソフトウェアを32ビットアーキテクチャから64ビットアーキテクチャへ変換することの困難さは様々である。よく言われる問題は、プログラマがしばしば、ポインタとintあるいはlongが同じ大きさだという前提でコードを書いていることである。つまり、ポインタとintあるいはlongとの型変換で、情報が失われないものと仮定している。これは32ビットから64ビットへの移行期に始まった問題ではなく、16ビットから32ビットへの移行期にも問題を起こしてきた。しかし、32ビットミニコンに始まり、ワークステーションを経て、昨今の高性能パソコンにおける32ビットOSまで、主要な環境が長らくの間、どちらも同じ32ビットであるとしてかまわなかったため、多くのコードが32ビット環境前提で書かれてきた。しかし、64ビット環境ではしばしば、この仮定は真ではない。C/C++では、特にこの種の間違いを犯しやすい。C89とC99の差異も問題を悪化させている。
C/C++での間違いを防ぐには、基本データ型のサイズによって判断する必要があるときは、コンパイル時も実行時もsizeofで常にサイズを確認するようにすればよい。