2013-05-13 8 views
8

私が検索キーとしてu_int64_t変数を使用したい、32ビットマシンではu_int64_tを使用できますか?

は、32ビットマシン上で利用可能u_int64_tのですか?

もしそうでなければ、この変数を2つの変数に分割する必要がありますか?検索キーとして、もう少し面倒です

このための回避策はありますか?

+6

にある道メートが

#include <sys/types.h> #ifdef __GLIBC_HAVE_LONG_LONG u_int64_t i; #endif 

以下ああのようなものかもしれません@ unwindあなたの[編集](http://stackoverflow.com/posts/16521066/revisions)は非常に邪魔です。 OPは、タイプの正しい命名について混同される可能性があります。この混乱は、質問を静かに編集するのではなく、回答またはコメントで解決する必要があります。さらに、正当な理由で段落全体を削除しました。編集内容を元に戻してください。 – user4815162342

+3

@ user4815162342これを指摘してくれてありがとう。私は実際のタイプがそのように綴られていることに気づいていなかったので、それはタイプミスであると仮定しました。また、実際に編集を元に戻すためのGrijesh(私が推測する)に感謝します。 – unwind

答えて

9

符号なし64ビット整数型は、C標準では保証されていませんが、通常は32ビットマシンおよびLinuxを実行するすべてのマシンで使用できます。存在する場合、タイプはuint64_t(アンダースコアが1つ少ないことに注意)となり、<stdint.h>ヘッダーファイルで宣言されます。

+0

少なくとも64ビット幅の符号なし整数は、 'uintleast64_t'(typedef in '')と 'unsigned long long'の名前で使用できることが保証されています。 – rubenvb

+0

@rubenvb: 'long long'は* 64ビットより大きい*に*許されていることに注意してください。 – DevSolar

+3

@DevSolar rubenvbのコメントは「**少なくとも64ビット幅**」と言っています。一方、OPは64ビットタイプだけを望んでおり、まったく64ビットのものをサポートせずにより広いタイプをサポートするかもしれないまれなアーキテクチャは気にしません。 – user4815162342

5

はい32ビットマシンで64ビット整数型がサポートされています。

標準では、long long(≧64、≥size of long)タイプはGNU extensionとしてサポートされています。 C99規格では、long long(≧64、≥size of long)整数の場合にはnative supportが存在します。

+0

'long long'は64ビットより大きいと*許可されていることに注意してください。 – DevSolar

+0

ええ、あなたはまあまあ、64ビット幅以上(稀です)長いことができますが、訂正のおかげで:) –

関連する問題