84

私は C/C++ を初めて使用するので、基本型についていくつか質問があります。

int64_ta)とlong( )の違いを説明してもらえますlong intか? 私の理解では、どちらも 64 ビット整数です。どちらかを選択する理由はありますか?

int64_tb) Web での定義を調べようとしましたが、うまくいきませんでした。そのような質問について相談する必要がある信頼できる情報源はありますか?

c)int64_tコンパイルに使用するコードについては、現在<iostream>、あまり意味がありません。の宣言を提供する他のインクルードはありint64_tますか?

4

5 に答える 5

101

int64_ta)とlong( )の違いを教えていただけますlong intか?私の理解では、どちらも64ビット整数です。どちらかを選ぶ理由はありますか?

前者は正確に64ビットの符号付き整数型です。後者は、少なくとも32ビットの符号付き整数型です。

b)Webでの定義を調べようとしましたがint64_t、あまり成功しませんでした。そのような質問について相談する必要がある信頼できる情報源はありますか?

http://cppreference.comはここでこれをカバーしています:http://en.cppreference.com/w/cpp/types/integer。ただし、信頼できるソースはC ++標準です(この特定のビットは§18.4整数型[cstdint]にあります)。

c)int64_tコンパイルに使用するコードについては、を含めています<iostream>が、これはあまり意味がありません。の宣言を提供する他のインクルードはありint64_tますか?

<cstdint>または<cinttypes>(名前空間の下std)、または<stdint.h>または<inttypes.h>(グローバル名前空間内)で宣言されます。

于 2012-11-28T11:38:18.413 に答える
12

int64_tC99標準によって、それを実装するプラットフォームで正確にlong64ビット幅であることが保証されていますが、少なくとも32ビットであるため、それ以上になる可能性があるという保証はありません。

§7.18.1.3正確な幅の整数型1typedef名intN_tは、幅N、パディングビットなし、2の補数表現の符号付き整数型を指定します。したがって、int8_tは、正確に8ビットの幅を持つ符号付き整数型を示します。

于 2012-11-28T11:38:18.643 に答える
7

int64_tCtypedefでそれを見つけることができますか<stdint.h>

于 2012-11-28T11:38:46.340 に答える
3

int64_tは、どのプラットフォームでも64ビット幅である必要があります(そのため、この名前が付けられています)。一方、longは、プラットフォームごとに長さが異なる場合があります。特に、sizeof(long)は多くの場合4です。32ビット。

于 2012-11-28T11:37:59.173 に答える