何バイトunsigned long longですか?と同じunsigned long long intですか?
int32_t、uint64_tなどのC ++の今後の標準とそれらを受け取ることになります。それらはヘッダーにあり<stdint.h>ます。
何バイトunsigned long longですか?と同じunsigned long long intですか?
int32_t、uint64_tなどのC ++の今後の標準とそれらを受け取ることになります。それらはヘッダーにあり<stdint.h>ます。
回答:
エグゼクティブサマリー:64ビット以上です。
unsigned long longと同じunsigned long long intです。そのサイズはプラットフォームに依存しますが、C標準(ISO C99)によって少なくとも64ビットであることが保証されています。long longC89にはありませんでしたが、どうやらMSVCでさえサポートしているので、かなり移植性があります。
現在のC ++標準(2003年に発行)にはありませんlong longが、多くのコンパイラが拡張機能としてサポートしています。今後のC ++ 0x標準はそれをサポートし、そのサイズはCと同じになるため、少なくとも64ビットになります。
式を使用して、正確なサイズをバイト単位(通常のプラットフォームでは8ビット)で取得できますsizeof(unsigned long long)。正確に64ビットが必要な場合uint64_tは、ヘッダーで定義されているを使用します。これは<stdint.h>、関連する一連の型(C99、C ++ 11、および一部の現在のC ++コンパイラで使用可能)とともに定義されています。
sizeof(char) 正確に1つを返すことが保証されています。「charunits」の数ではなく、オペランドの大きさをバイト数で返します。したがって、「ほとんどのプラットフォーム」のバイトではなく、すべてのプラットフォームのバイトです。
charでバイトすれば、あなたは正しいです。等式charとオクテットの場合、それは変化します。
sizeof(long long) == 1が適合します。
Cと同様に、C ++の利点は、これらのサイズが実装によって定義されることです。したがって、使用しているコンパイラーを指定しないと、正しい答えはありません。それらの2つは同じですか?はい。「longlong」は、両方を受け入れるコンパイラの「longlongint」の同義語です。
少なくとも64ビットである必要があります。それ以外は、実装が定義されています。
厳密に言えば、unsigned long longC ++ 0x標準になるまでC ++の標準ではありません。 unsigned long longタイプの「simple-type-specifier」unsigned long long intです(したがって、これらは同義語です)。
ザ・ long long型セットもC99にあり、標準化される前からC ++コンパイラの一般的な拡張機能でした。
演算子を使用すると、sizeofバイトで表された型のサイズがわかります。1バイトは8ビットです。次のプログラムを参照してください。
#include <iostream>
int main(int,char**)
{
std::cout << "unsigned long long " << sizeof(unsigned long long) << "\n";
std::cout << "unsigned long long int " << sizeof(unsigned long long int) << "\n";
return 0;
}