FreeBASIC マニュアルのトップに戻る

FreeBASIC ProPgAssignments

目次→教本→プログラマーのための案内Assignments←オリジナル・サイト

代入 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

代入は、一般に、変数が、その存続期間とスコープ内のさまざまな時点で、さまざまな値を保持できるようにします。

単一代入命令文
代入文は、変数(単純や、インデックス付きや、byref 関数の結果も)と式(変数、定数、演算子、括弧 で構築)で構成されます:
変数 = 式
代入命令文を実行すると、右側の式が評価され、左側の変数に割り当てられます。

代入操作の場合、式の値が明確に定義され(有効な '右辺値' である)そして、変数が変更可能なエンティティを表す(有効な変更可能な(定数でない) '左辺値' である)必要があります 。
代入が適切に形成されるには、右側の式の型が、左側の変数の型と互換性がある必要があります(つまり、式を変数の型に型変換できる必要があります)。

単純な代入の例は次のとおりです:
x = 0
上記の例では、変数 'x' は数値型として宣言する必要があります。
代入命令文の実行後、変数 'x' の値は、ゼロになります(その型に応じて、整数または浮動小数点値として)。

代入命令文で:
- 式は、プログラムの現在の状態で評価されます。
- 変数に計算値が割り当てられ、その変数の以前の値が置き換えられます。
右側が最初に評価されるので、次のように記述することで変数を増大できます:
x = x + 1

複合代入命令文
算術演算子は、複合算術演算および代入演算で使えます。

たとえば、次の複合の加算と代入の例を考えてみましょう:
x += 7
上記の複合算術および代入命令文は、次の長い形式と同等です:
x = x + 7

より一般的な、複合形式(演算子 op を使用):
x op= y
以下と同等です:
x = x op y

複合文は、長い形式が有効ならば、常に使えます。
これには、操作 'x op y' 自体が正しい形式である必要があり、操作の結果が 'x' に代入できる必要があります。

代入と等号
等号 '=' を代入演算子として使うことは、同等の比較としての等号と衝突するので、頻繁に批判されています。
これは、初心者がコードを書く際の混乱と、経験豊富なプログラマーがコードを読む際の混乱の、両方をもたらします。
'=' は、数学の平等を意味するので、初心者プログラマーは、代入を等号の関係演算子と混同することがあります。ただ、多くの言語で、 '=' は、代入に使われています。
代入では、変数の値が変更される一方、等価テストでは、2つの式の値が同じかどうかがテストされます。

FreeBASIC では、通常、単一の等号 '=' が、代入演算子と等値関係演算子の両方に使われ、文脈で、どちらを意味するかが決定されます。
これを改善するため(およびパーサーのあいまいさのいくつかのケースを解決するため)、'=' の代わりに、代替シンボル '=>' を代入に使えます(宣言内のイニシャライザーで既に一般的に使われているものと同じです)。
注:既存の、 '<=' (演算子「以下」)および ':='':' は命令文の区切り文字)に対して、'=>' 記号が採用されています。

命令文には、代入演算子と等価演算子を混在させることができます。
例えば:
x = a = b
次のように解析されます:
x = ( a = b )
上記の等式 'a = b' は、変数 'a''b' の型に応じて、'-1' '0', または 'true' 'false'を返しますが、これらの変数の値は 変更されません。
等価式の結果だけが、'x' に代入されます。
上記の代入命令文で、等式を囲む括弧を使うと、グローバルな動作を強調できます。
代替記号 '=>' も使えます:
x => a = b
('=>' は、等値演算子のシンボルとしては使えません)

さまざまなケースを示す例:

Dim As Integer x, y, z

x = 5          ''        (or 'x => 5')
Print x        ''  5     (assignment expression is a constant)

y = x + 4      ''        (or 'y => x + 4')
Print y        ''  9     (assignment expression is the sum of a variable and a constant)

y = y + 3      ''        (or 'y => y + 3')
Print y        ''  12    (value of x is incremented by 3)

z = 3          ''        (or 'z => 3')
z *= x         ''        (or 'z *=> x')
Print z        ''  15    (value of z is multiplied by value of x)

If x = y Then  ''        (value of x is not modified)
  Print x
Else
  Print x, y   ''  5     12
End If

x = y = z      ''        (or 'x => y = z')    (value of y is not modified)
Print x, y, z  ''  0     12    15

参照
プログラマーのための案内に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2019-09-27 04:08:07
日本語翻訳:WATANABE Makoto、原文著作者:fxm

ホームページのトップに戻る

表示-非営利-継承