価値(コンピュータサイエンス)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピュータサイエンスでははプログラムによって操作できるエンティティの表現です。タイプのメンバーは、そのタイプの値です。[1]

「変数の値」は環境内の対応するマッピングによって与えられます。[要出典]変数が割り当て可能な言語では、変数のr値(または内容)とl値(または場所)を区別する必要があります。[2]

宣言型(高級)言語では、値は参照透過性である必要があります。これは、結果の値が、値の計算に必要な式の場所に依存しないことを意味します。場所の内容(ビット、1または0)とその解釈のみが重要です。[要出典]

割り当て:l値とr値

一部の言語では、代入ステートメントの左側と右側の一般的な評価モードから派生したl値r値の概念を使用しています。l値は、単一の式を超えて存続するオブジェクトを指します。r値は、それを使用する式を超えて持続しない一時的な値です。[3]

l値とr値の概念は、Combined Programming Language(CPL)によって導入されました。r値、l値、およびr値/ l値の式の概念は、入力パラメーター(値を持つ)、出力パラメーター(割り当て可能)、および入出力パラメーターのパラメーター・モードに類似しています。 (値があり、割り当てることができます)。ただし、技術的な詳細はコンテキストと言語によって異なります。

R値とアドレス

多くの言語、特にCファミリでは、l値には、実行中のプログラムにプログラムでアクセスできるストレージアドレスがあります(たとえば、C / C ++の「&」などの演算子のアドレスを介して)。つまり、変数またはde-特定のメモリ位置への参照参照。R値は、l値(以下を参照)または非l値(l値と区別するためにのみ使用される用語)にすることができます。C式を考えてみましょう4 + 9実行されると、コンピューターは13の整数値を生成しますが、プログラムはこの13がコンピューターのどこに格納されるかを明示的に指定していないため、式は非l値です。一方、Cプログラムが変数xを宣言し、値13をxに割り当てる場合、式xの値は13であり、l値です。

Cでは、l値という用語は元々、代入できるものを意味していました(したがって、名前は代入演算子の左側にあることを示しています)が、予約語const(定数)が言語に追加されたため、この用語は'変更可能なl値'になりました。C ++ 11には、コンパイラのみの式のアドレスの使用/アクセスを示すための特別なセマンティックグリフが存在します(論理演算に使用される演算子&&と混同しないでください) つまり、プログラムの実行時にaddress-of演算子を使用してアドレスを取得することはできません( moveセマンティクスの使用を参照)。 &&&

このタイプの参照は、l値だけでなく非l値を含むすべてのr値に適用できます。一部のプロセッサは、即時値をとる1つ以上の命令を提供します。これは、略して「即時」と呼ばれることもあります。即値は、通常、レジスタにロード、レジスタに加算、またはレジスタから減算するために、それを使用する命令の一部として格納されます。命令の他の部分は、オペコードと宛先です。後者は暗黙的かもしれません。(非即時値はレジスターに存在するか、メモリー内の別の場所に格納される可能性があり、命令に値への直接または間接アドレス[たとえば、インデックスレジスターアドレス]を含める必要があります。)

l値式は、オブジェクトを指定(参照)します。変更不可能なl値はアドレス指定可能ですが、割り当て可能ではありません。変更可能なl値を使用すると、指定されたオブジェクトを変更および検査できます。r値は任意の式であり、非l値はl値ではない任意の式です。1つの例は、「即時値」(以下を参照)であり、その結果、アドレス指定できません。

アセンブリ言語で

値は、文字列、数字、1文字など、 特定のデータ型による事実上すべての種類のデータにすることができます。

プロセッサは、多くの場合、複数のサイズのイミディエートデータ(たとえば、8ビットまたは16ビット)をサポートし、命令バリアントごとに一意のオペコードとニーモニックを使用します。プログラマーが適合しないデータ値を提供した場合、アセンブラーは「範囲外」エラーメッセージを発行します。ほとんどのアセンブラでは、即値をASCII10進数16進数8進数、または2進数のデータとして表すことができます。したがって、ASCII文字'A'はまたはと同じ65です0x41文字列のバイト順序は、アセンブラとコンピュータアーキテクチャに応じて、プロセッサ間で異なる場合があります。

メモ

  1. ^ Mitchell 1996、p。9.9。
  2. ^ Mitchell 1996、pp。389–390。
  3. ^ 「左辺値と右辺値(Visual C ++)」Microsoft DeveloperNetwork 2016年9月3日取得

参考文献

外部リンク