_unsigned short
_と_unsigned int
_の違いは何ですか? _unsigned short
_は_0-65,535
_であり、_unsigned int
_は_0-65,535
_または_0-4,294,967,295
_であることがわかりました。違いがよくわかりません。アーキテクチャのデータ型のサイズを知るにはどうすればよいですか?そして、例えばc = (unsigned short) d;
がc
が_unsigned short
_で、dが_unsigned int
_の場合;それはどういう意味ですか? d
からの最初の16ビットはc
?に割り当てられます
あなたは本当にshort
とint
の違いを尋ねています。答えは、short
はより狭いかもしれませんが、int
と同じ幅かもしれません。これは、プラットフォームに関係なく、事実上私たちが知っているすべてです。多くのプラットフォームには、32ビットint
と16ビットshort
がありますが、すべてではありません。
これは、Cデータ型の履歴を説明するための便利なリンクです。
http://en.wikipedia.org/wiki/C_data_types
したがって、データ型のサイズはプラットフォームに依存しますが、intの長さが32ビットの場合、2 ^ 32の異なる数値(符号なしの場合は0-4,294,967,295)のいずれかを表すことができます。同様に、ショートが16ビット長の場合、2 ^ 16個の異なる数値(符号なしの場合は0〜65,535)のいずれかを表すことができます。
このリンクは、Visual Studio 2005の実装の詳細を提供します。intはサイズが32ビット(4バイト)で、shortは16ビット(2バイト)です。
http://msdn.Microsoft.com/en-us/library/s3f49ktz(v = vs.80).aspx
正確な実装は、コンパイラに依存します。
あなたの質問の最後の部分については、もしあなたがshortの最大値よりも大きいintをshortにキャストしようとすると、異なる値になります(おそらく最初の16ビットですが、確認するためにテストする必要があります) 。
変数タイプ名(short、int、long、doubleなど)がすべてのマイクロプロセッサアーキテクチャまたはプログラミング言語全体で特定のビット長を指す必要があるとは言えません。それは主にマイクロプロセッサのアーキテクチャと、もちろんプログラミング言語の定義に依存しています。一般に、signed/unsigned shortには、signed/unsigned intの半分のビットサイズが必要です(予想)。