データ型(データがた、Data type)とは、コンピュータプログラミングや計算機科学において、属性を持つデータを分類し、その扱われ方をコンパイラやインタープリタに知らせるプログラム。単に型(かた、Type)とも言われる。
多くのプログラミング言語は、整数型・浮動小数点型・ブール型・文字型といった基本データ型を備えている。計算対象にされるデータは、しばしば値(value)と言われる。データ型は式内の値を制約して、関数への適用可能性や変数への代入可能性を定義する。データ型は、値の集合の概念と近似している。
コンセプト「型システム」も参照
データ型は、型システムで扱われる。型システムは、データの定義と解釈と用法を定義する形式体系である。プログラム内の多種多様なデータ間の計算の整合性を保ち、不適切な計算がなされないようにするのが型システムの目的である。これは型安全性と言われて、安全なデータ計算を保証する概念である。
計算機科学者デビッド・パーナスは、データ型の五つのタイプを定義している[1]: この節は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
統語(syntactic)
ただの表記であり意味論がない。ただ記号の整合性を重視する。
表現(representation)
意味論を持たせている。構成/構造/役割の整合性を重視する。数値とポインタ値の違いもそう。
表現+動作(representation and behaviour)
データ表現に関数/演算子を付けたもの。
値空間(value space)
データ表現の論理積や論理和などによる空間表現。
値空間+動作(value space and behaviour)
空間表現に関数/演算子を付けたもの。
データ型の種類.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}
出典検索?: "データ型"
データ型のバリエーションは個々の型システムによって定義される。例えば数値を示す型として、C言語の型システムはintおよびfloatを持ち、JavaScriptの型システムはNumberのみを持つ。それぞれの型システム(言語)が規定する型の分類が存在し、また慣例的にプログラミング言語問わずおこなわれる分類も存在する。複数の観点から型を分類することができる。
単純型/複合型
最小単位の型かその組み合わせによる型か(cf. 代数的データ型)
言語定義型/ユーザ定義型
言語によって最初から提供されている型か、ユーザーが自分で定義した型か
first-class/non-first-class
関数の実引数/返値として利用できる型か否か(cf. 第一級オブジェクト)
また処理系の実装の側からの観点が強い分類だが、レジスタなどのワードに値が直接収まる型と、ワードにはポインタが入り、ポインタの先に実際の値がある型、といったような分類もある。