プリミティブ型

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動

プリミティブ型英語: primitive data type)は、データ型の分類の一つである。類似的な分類に基本型(basic type)と組み込み型(built-in type)がある。対義的な分類はコンポジット型英語版である。

プログラミング言語理論英語版代数的データ型視点では「その構造内に部分型が含まれていない型[1]」がプリミティブ型になるが、この記事におけるここから先の説明は、最初に説明した理論的な分類に従ったものではなく、よく信じられているらしい[要出典]プログラミング言語によって提供されるデータ型であり基本的な要素である。対する語は複合型という。言語やその実装に依存して、プリミティブ型がコンピュータメモリ上のオブジェクトと一対一対応のときもあれば、そうでないときもある。組み込み型もしくは基本型とも呼ぶ。」という解釈に従ったものである。

代表的なプリミティブ型を一部列挙:

プリミティブ型にもなりうる、より高度な型を一部列挙:

プリミティブ型が最も高速な演算を行える言語構成要素である場合が多い。例として整数の加算は、単一マシン命令として演算され、プロセッサによっては単一マシン命令で文字列を処理する具体的な命令を提供している。特に、C言語標準では「plainなint型オブジェクトのサイズは実行環境のアーキテクチャに依存する」とされている。これは、32ビットアーキテクチャではint型が32ビットになりえることを意味する。

Smalltalkではプログラムによって拡張されたプリミティブデータ型を許可しており、それらの型の演算命令を追加することもでき、場合によっては言語固有の演算命令を再定義することもできる。

.NET[編集]

.NET Framework共通言語ランタイム (CLR) では、System.Type.IsPrimitiveプロパティによって、型がCLRプリミティブ型であるかどうかを判定できる[2]。各.NET言語の組み込みの値型は必ずしもCLRプリミティブ型ではないが、CLRプリミティブ型はすべて値型である。

例えば、十進浮動小数点数型System.Decimalは値型(構造体)であり、C#の組み込み型decimalでもあるが、CLRプリミティブ型ではない。ポインタまたはハンドルを表すときに使用されるプラットフォーム固有の型System.IntPtrは値型であり、CLRプリミティブ型でもあるが、C#の組み込み型ではない。

CLRプリミティブ型は共通中間言語 (CIL) 上で専用の命令を持つなどの特別な性質がある。

JavaScript[編集]

ECMAScriptにおけるプリミティブ値はUndefined, Null , Boolean, Number, BigInt, Symbol および String の7種類である[3]

脚注と出典[編集]

  1. ^ 正確には「他の型(自身を含む)を含まない」である(再帰データ型の考慮)。
  2. ^ Type.IsPrimitive Property (System) | Microsoft Docs
  3. ^ member of one of the types Undefined, Null, Boolean, Number, BigInt, Symbol, or String ECMA-262::4.4.5 primitive value

関連項目[編集]