Long longからintに変換する方法、およびc ++に戻す方法また、long long、特にその最大サイズのプロパティは何ですか、事前に感謝します..
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
を保持できる場合とできない場合があります。この場合、結果は実装定義です。最も可能性の高い動作は、高位ビットが破棄されることです。たとえば、9223372036854775807
をint
に変換すると、2147483647
になります。 (これは16進数で明確です。値はそれぞれ0x7fffffffffffffff
と0x7fffffff
です。)
明示的に変換する必要がある場合は、castを使用できます。 Cスタイルのキャストでは、括弧内の型名を使用します。
(long long)x
または、C++スタイルのstatic_cast
を使用できます。
static_cast<long long>(x)
これは、操作できる型が制限されているため、Cスタイルのキャストよりも多少安全です。
Intのサイズは2バイトのみですが、他のサイズは通常intより大きくなります。したがって、longをintに変換しようとすると、情報が失われてしまいます。しかし、情報の正確さを犠牲にすることなく、他の方法が可能です。 a
がlong型で、b
がint型であるとします。次に、長いCovertion:a=(long)b;
にintします。その他の方法:b=(int)a;
。