処理の速度の差が出る場合もありますが,大きいのは利用可能なメモリの大きさです。
- x86は32bit用の実行ファイルを生成するため,32bit環境でも64bit環境でも実行できますが,メモリは最大4GiB (実際のユーザーメモリ空間は2GiB未満) しか扱えません。
- x64は64bit用の実行ファイルを生成するため,32bit環境では実行できず64bit環境のみで実行できますが,メモリは最大16EiB (実際はOSに依存,Windows 2016の場合は24TiB) まで扱えます。
動画編集ソフトなど,大量のメモリを必要とする場合などには,x64用のバイナリを作るとプログラムが簡単になる場合があります。
注意点としては,ポインタ型やsize_t, ptrdiff_tなどの型のサイズが変化することがあります。
x86ビルドにおいてこれらの型は32bitでしたが,x64ビルドにおいてこれらの型は64bitになります。
printfに渡すときなどに,size_tに対応する箇所を%dにしてしまうと,正しく値が表示されなくなりますし,
ref)
http://dixq.net/forum/viewtopic.php?t=5310&p=44235
ポインタをint型にキャストして元の型に戻すと,値が欠落する可能性があります。