## 第7章　式

CodeScapeには2つの式エバリュエータがあります。1つはC/C＋＋の式、もう1つはアセンブラ式の評価に使用されます。

### 7-1　C/C＋＋式

C/C＋＋ 式エバリュエータはC形式の式を受け付けます。 //table1[|l(6w)|l(8w)|l(15w)|l|][|l(6w)|l(8w)|l(15w)|l|]{ 演算子の優先順位 //kb 演算子 タイプ 使用法 説明 //kb （） 基本 　 カッコ //kb ［］ 基本 pointer［expr］ サブスクリプト //kb . 2項演算子 object.member メンバー選択 //kb −＞ 2項演算子 pointer−＞member メンバー選択 //kb sizeof（） 単項演算子 sizeof（expr） オブジェクトのサイズ //kb sizeof（） 単項演算子 sizeof（type） 型のサイズ //kb − 単項演算子 −expr 単項マイナス //kb ＋ 単項演算子 ＋expr 単項プラス //kb ~ 単項演算子 ~expr ビット単位否定 //kb ！ 単項演算子 ！expr 論理否定 //kb ＊ 単項演算子 ＊expr 間接参照 //kb ＆ 単項演算子 ＆lvalue ...のアドレス //kb ＊ 2項演算子 expr＊expr 乗算 //kb ／ 2項演算子 expr/expr 除算 //kb ％ 2項演算子 expr％expr モジュロ（余り） //kb ＋ 2項演算子 expr＋expr 加算 //kb − 2項演算子 expr-expr 減算 //kb ＜＜ 2項演算子 expr＜＜expr 左シフト //kb ＞＞ 2項演算子 expr＞＞expr 右シフト //kb ＜ 2項演算子 expr＜expr より小 //kb ＜＝ 2項演算子 expr＜＝expr より小か等しい //kb ＞ 2項演算子 expr＞expr より大 //kb ＞＝ 2項演算子 expr＞＝expr より大か等しい //kb ＝＝ 2項演算子 expr＝＝expr 等しい //kb ！＝ 2項演算子 expr！＝expr 等しくない //kb ＆ 2項演算子 expr＆expr ビット単位AND //kb ^ 2項演算子 expr^expr ビット単位XOR //kb | 2項演算子 expr|expr ビット単位OR //kb ＆＆ 2項演算子 expr＆＆expr 論理AND //kb || 2項演算子 expr||expr 論理OR //kb //table1}

前記の演算子は、次のオペランドを操作対象とします。 //table1[|l(14w)|l|][|l(14w)|l|]{ //kb オペランド 定義 //kb 定数（浮動小数点または整数） 定数：「Ox」を前置した16進数、「O」を前置した8進数、「U」を後置した無符号数。たとえば「A」は無効。 //kb レジスタ 有効なレジスタ名。 //kb シンボル シンボル名はそのタイプが影響する。たとえば（char chr＝’A’）と定義された変数は、評価されると「A」を返す。オブジェクトのアドレスを取得するには、「＆chr」とすることが必要。 //kb //table1}

#### 演算子の制限

・タイプキャスト（typecast）。整数、浮動小数点、無符号整数、int＊、char＊などの基本的なタイプのタイプキャストは有効です。struct basic＊などのユーザー定義タイプに対するタイプキャストは無効です。 ・スコープ演算子「：：」。クラス エレメント名の一部としてスコープ演算子は有効です。例： c_basic：：print ・このリリースでは、「＝、＋＝、＊＝、＋＋、−−」などの代入演算子はインプリメントされていません。 ・このリリースでは、file/line numberのフォーマットはインプリメントされていません。

[←] | [INDEX] | [→]