web-dev-qa-db-ja.com

long longからintに変換し、逆にC ++に戻す

Long longからintに変換する方法、およびc ++に戻す方法また、long long、特にその最大サイズのプロパティは何ですか、事前に感謝します..

17
Loers Antario

intは少なくとも16ビット幅であることが保証されています。最新のシステムでは、最も一般的には32ビットです(64ビットシステムでも)。

元々C++には存在しなかったlong longは、少なくとも64ビット幅であることが保証されています。ほとんど常に正確に 64ビット幅です。

ある整数型から別の整数型に値を変換する通常の方法は、単純に値を割り当てることです。必要な変換は暗黙的に行われます。例えば:

int x = 42;
long long y = 9223372036854775807;
y = x; // implicitly converts from int to long long
x = y; // implicitly converts from long long to int

ターゲットタイプがソースタイプのすべての値を表すことができない場合の絞り込み変換では、オーバーフローのリスクがあります。 intは、値9223372036854775807を保持できる場合とできない場合があります。この場合、結果は実装定義です。最も可能性の高い動作は、高位ビットが破棄されることです。たとえば、9223372036854775807intに変換すると、2147483647になります。 (これは16進数で明確です。値はそれぞれ0x7fffffffffffffff0x7fffffffです。)

明示的に変換する必要がある場合は、castを使用できます。 Cスタイルのキャストでは、括弧内の型名を使用します。

(long long)x

または、C++スタイルのstatic_castを使用できます。

static_cast<long long>(x)

これは、操作できる型が制限されているため、Cスタイルのキャストよりも多少安全です。

16
Keith Thompson

Intのサイズは2バイトのみですが、他のサイズは通常intより大きくなります。したがって、longをintに変換しようとすると、情報が失われてしまいます。しかし、情報の正確さを犠牲にすることなく、他の方法が可能です。 aがlong型で、bがint型であるとします。次に、長いCovertion:a=(long)b;にintします。その他の方法:b=(int)a;

3
ASHUTOSH