2017-12-22 5 views
0

私は、C/C++コードがマシンコードでどのように表現されているかを頭を悩ませていましたが、メモリの長さの指定から実際にどのデータ型が離れているのか理解できませんでした。メモリの長さ以外のデータ型の違いは何ですか?

+0

また、メモリ内の値に対してどのような操作が可能であるか、およびそれらの実行方法も定義します。 – StoryTeller

+0

C/C++が存在しません。 –

答えて

3

種類も関連付けられています。

  • そのタイプのすべての変数が表すことができる一連の値。
  • そのタイプのメモリ内のレイアウト(例えば、変数を表す各ビットまたはバイトに付随する意味など)
  • 変数に作用する操作の集合。
  • これらの操作の動作。

タイプはマシンコードで直接表される必要はありません。コンパイラは、メモリおよびマシンレジスタを操作する一連の命令およびデータ(ターゲットプラットフォームによって異なる)を発行します。 Cソース内の各変数の型は、どのメモリを割り当てるかについてコンパイラに情報を提供し、コンパイラは式(C文で)とレジスタや機械命令の使用を決定して必要な効果を与えます。

+0

異なる長さの型を持つサンプルを追加して、コード内で互換的に使用すると動作が異なる場合があります。 – user2462027

+1

'unsigned'と' int'は(指定されたターゲットマシン上で)同じサイズですが、異なる値の集合を表します( 'unsigned'は負の値を表すことはできず、' int'は)。オーバーフローする 'unsigned'はモジュロ演算を使用します(例えば' -1'の結果がラップされて 'unsigned'がそのターゲットマシンで表現できる最大値になります)。 'int' DOはコンパイラ間で、' int'が同じサイズの2つのコンパイラの間でも変わります)。それは標準がそれらを指定する方法です。 – Peter

関連する問題