値 (計算機科学)

プログラミングにおける「値」とは



プログラミングにおける「値」とは、式を評価した結果として得られるものです。式はデータ型を持ち、評価の結果は内部的にはビット列として表現されます。しかし、同じビット列であっても、データ型が異なれば、異なる意味を持つ値として解釈されることがあります。例えば、あるビット列は整数浮動小数点数文字列など、様々なデータ型として解釈可能です。

多くのプログラミング言語で共通してサポートされている値の型としては、数値表現などが挙げられます。一方で、Pascalの集合型のように、あまり一般的ではない型も存在します。

左辺値と右辺値



C言語などの一部の言語では、左辺値(l-value)と右辺値(r-value)という概念があります。左辺値は、メモリ上のアドレスと結びついたもので、変数やデリファレンスされた参照などが該当します。右辺値は、左辺値である場合も、そうでない場合もあります。

C言語において、左辺値は代入演算子(=)の左側に置けるもの、つまり代入可能なものを指すのが基本です。しかし、配列型の変数のように、アドレスは持つものの代入できない左辺値も存在します。標準化の過程でconst修飾子が追加され、「変更可能な左辺値」と「変更不可能な左辺値」という概念が生まれました。

左辺値はオブジェクトを指し示す式であり、変更不可能な左辺値はアドレスを持つものの、代入はできません。一方、変更可能な左辺値は、指し示すオブジェクトの値を変更できます。右辺値は、式を評価した結果得られる値を意味します。

アセンブリ言語における値



アセンブリ言語(または機械語)のレベルでは、多くのアーキテクチャにおいて、値は単なるビット列として扱われます。そのため、どのデータ型として解釈するかは原則として自由です。ただし、タグビットなどを用いて、機械レベルで型を区別するアーキテクチャも存在します。

アセンブリ言語では、値を扱う方法として主に2つがあります。1つは、メモリの特定のアドレスに値を直接配置する方法です。多くのアセンブラには、このための疑似命令が用意されています。もう1つは、イミディエイト(即値)を使用する方法です。これは、機械語の命令列の中に、命令に続いて直接値を埋め込むもので、命令セットによっては値の範囲が制限される場合があります。この制限は、命令セット自体というよりも、命令をビット列にエンコードする際の命令フォーマットによって生じます。

関連事項



Value object (値オブジェクト):値そのものを表現するオブジェクト。同一性ではなく、値の内容によって区別されます。
イミュータブル:作成後に状態を変更できないオブジェクト。値オブジェクトは、通常イミュータブルに設計されます。

外部リンク



Value Object
Transfer Object Pattern

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。