プリミティブ型

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Tarepan (会話 | 投稿記録) による 2020年4月1日 (水) 12:38個人設定で未設定ならUTC)時点の版 (JavaScriptにおけるプリミティブ型を追加)であり、現在の版とは大きく異なる場合があります。

プリミティブ型(プリミティブがた 英語: primitive data type、プリミティブデータ型)は、データ型の1分類である。理論計算機科学的に代数的データ型によって考えれば「そのデータ型の定義の中に部分として他の[1]型を含まないような型」がプリミティブ型であるが、Javaにおいて型が「primitive types(プリミティブ型)とreference type(参照型)」に二分されることにひきずられたと思われる2分法などが信じられていることも多い[要出典]

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

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

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

プリミティブ型が最も高速な演算を行える言語構成要素である場合が多い。例として整数の加算は、単一マシン命令として演算され、プロセッサによっては単一マシン命令で文字列を処理する具体的な命令を提供している。特に、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, String, Symbol, Number, Object の7種類である[3]。この7種類が慣例的にプリミティブ型と呼称される。

  1. ^ 正確には「他の型(自身を含む)を含まない」である(再帰データ型の考慮)。
  2. ^ Type.IsPrimitive Property (System) | Microsoft Docs
  3. ^ The ECMAScript language types are Undefined, Null, Boolean, String, Symbol, Number, and Object. ECMAScript® 2019 Language Specification - ECMAScript Data Types and Values