38

ウィキペディアStroustrup の FAQ では、型long longは少なくとも64 ビット以上であると述べintています。C++11 標準の §3.9.1 Fundamental Types セクションを見てきましたが、64 ビットへの参照が見つかりません。私が見つけることができるのは、それが少なくとも で、少なくとも と同じ長さであるということだけです。標準は、拡張型ではなく標準の整数型としてリストされているため、少なくとも 64 ビットを保持するこのアサーションが正しいかどうか疑問に思っています。もしそうなら、それはどこに記載されていますか?C++11 標準のみ について話していることに注意してください。long intintlong longlong long
long long

4

1 に答える 1

37

C++ 標準は、これについて C 標準を参照しています。[c.limits] を参照してください。は Cのと同じ意味でLLONG_MAX定義されています。そして、これはCが言わなければならないことです:<climits><limits.h>LLONG_MAX

5.2.4.2.1 整数型のサイズ<limits.h>

#if以下に示す値は、前処理ディレクティブでの使用に適した定数式に置き換えられます。[...] それらの実装定義の値は、同じ符号で示されているものと同じ大きさ (絶対値) である必要があります。

[...]

-- タイプのオブジェクトの最大値long long int

LLONG_MAX +9223372036854775807 //2 63 -1

値を表すことができなければならない符号付きの型には、922337203685477580764 ビット以上が必要です。

于 2012-04-07T09:17:23.673 に答える