強い型付けと弱い型付け
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/30 09:44 UTC 版)
「型システム」の記事における「強い型付けと弱い型付け」の解説
強い(strong)と弱い(weak)は、静的/動的型付けでのプログラム要素の型を解釈(interpret)する際の性質である。 強い型付けとは、プログラミング言語仕様内でデータ値の型を解釈するという全く普通の方法に従ったものである。暗黙的型変換(implicit type conversion)と型強制(type coercion)と型ジャグリング(type juggling)は、言語仕様内なので、こちら側になる。基底型を派生型にするなど一定の型制約での実行時型チェック付きの型キャスト(type casting)も、こちら側になる。特殊な例では、LISP風の潜在的型付けやダックタイピングによる型解釈も言語仕様内なので、こちら側である。 弱い型付けとは、言語仕様外になる明示的型変換(explicit type conversion)と型キャスト(type casting)の使用によって、データ値の型を様々に解釈できる変則的な方法を大幅に許容したものである。型安全性は保証されなくなる。具体例としては以下がある: 数値用例 明示的型変換によって、実数型を整数型に丸める。整数型を実数型に拡張する。ワード値をバイト値に切り詰める。バイト値をワード値に拡張して拡張部分を0で埋めるなど。 ポインタ用例 主にvoidポインタを型キャストして、あらゆる型を表わす。 タグ無し共用体用例 タグ無し共用体を明示的型変換して、あらゆる型を表わす。 型パンニング(type punning)用例 明示的型変換によって、ビット列と数値型を変換する。アドレス値と数値型を変換する。文字型/文字列と数値型を変換する。レコードのバイト列を切り詰めたり拡張したりして基底レコードと派生レコードを変換するなど。
※この「強い型付けと弱い型付け」の解説は、「型システム」の解説の一部です。
「強い型付けと弱い型付け」を含む「型システム」の記事については、「型システム」の概要を参照ください。
- 強い型付けと弱い型付けのページへのリンク