3.4.1 代入操作

代入操作では,右オペランドの値を左オペランドに割り当てます。代入操作の左オペランドは定数ではありません。

<この項の構成>
(1) 形式
(2) 説明
(3) 記述例

(1) 形式

代入ステートメント

assignment_expression END_STMT

代入式

identifier assign_operand expression

(2) 説明

代入操作では,右の値の型は左の値の型に変換され,割り当て後は左オペランドに値が格納されます。左オペランドは関数または定数にしないでください。

右オペランドと左オペランドの型が異なる場合は,型変更が実行されます。型変更は,指定された演算子と,オペランドまたは演算子の型に応じて実行されます。

AIT言語で実行される型変更を次の表に示します。警告やエラーは文法チェック時に表示されます。

左オペランドの型右オペランドの型結果説明
integerintegerintegerinteger型変数の値が別のinteger型変数に代入されます。
integerfloatinteger切り捨て後の値がinteger型変数に代入されます。データの正確性が損なわれるため警告が表示されます。
integerboolintegertrueは1として,falseは0としてinteger型変数に代入されます。
integerstringエラーstring値はintegerに型変更できないため,エラーが表示されます。
floatintegerfloatinteger型変数の値がfloat型変数に代入されます。
floatfloatfloatfloat型変数の値が別のfloat型変数に代入されます。
floatboolfloattrueは1.0として,falseは0.0としてfloat型変数に代入されます。
floatstringエラーstring値はfloatに型変更できないため,エラーが表示されます。
boolintegerbool0以外の値はtrueとして,0はfalseとしてbool型変数に代入されます。データが失われるため警告が表示されます。
boolfloatbool
boolboolboolbool型変数の値が別のbool型変数に代入されます。
boolstringエラーstring型変数の値はboolに型変更できないため,エラーが表示されます。
stringintegerエラーinteger型変数の値はstringに型変更できないため,エラーが表示されます。
stringfloatエラーfloat型変数の値はstringに型変更できないため,エラーが表示されます。
stringboolエラーbool型変数の値はstringに型変更できないため,エラーが表示されます。
stringstringstringstring型変数の値が別のstring型変数に代入されます。

なお,AIT言語では多重代入ができます。多重代入によって,ある値を二つの変数に代入できます。

(3) 記述例

MAIN
   {
       a = 10;         // 10という値がaに代入されます。
       a = b = 20;     // 多重代入が指定されています。
                       // 20という値が始めに変数bに代入され,
                       // 次に変数aに代入されます。
   }