プロジェクトで大きな正の整数 (8 バイト) を使用できるようにしたいのですが、私のシステムでは sizeof(unsigned long) が 8 になりますが、ほとんどのシステムで unsigned long は 4 バイトしかないことを読み、unsigned long を指定することにしました少なくとも 8 バイトであることが保証されているためです。
ただし、使用するほど、移植性が非常に高くないことがわかりました。たとえば、一部のシステム(コンパイラによって異なります)では、printfは%lluでフォーマットし、一部のシステムでは%lldでフォーマットします。
私のコードは、unsigned long が 8 バイトになる 64 ビットの Debian マシンでのみ実行されます。携帯性は大きな問題ではありません。これらの状況で unsigned long よりも unsigned long long を使用するのはやり過ぎですか? unsigned long よりも unsigned long long を使用する利点はありますか?