【Q&A原稿】マクロの演算子の意味は?No.00111
JRくん さん 98/04/05 13:23
 

  ひさびさに(^^;)新規原稿です。

  ●マクロ中の演算子の意味は?
  Q. 秀丸マクロに使える演算子がヘルプに書いてありますが、私はC言語を
     知らないので演算子の意味がわかりません。(^^;)
  A. 以下の表とマクロ例を参考にしてみてください。

  ============================================
    算術演算子
          +       加算
          -       減算
          *       乗算
          /       除算(商)
          %       剰余(MOD)

    論理演算子
          <=      (右辺)は(左辺)以上
          >=      (右辺)は(左辺)以下
          <       (右辺)は(左辺)より大きい
          >       (右辺)は(左辺)より小さい
          !=      (右辺)は(左辺)と違う
          ==      (右辺)は(左辺)と同じ

          &&      AND:(左辺)かつ(右辺)
          ||      OR:(左辺)または(右辺)
          !       NOT:(右辺)ではない

    ビット演算子
          |       OR
          &       AND
          ^       XOR
  ============================================


  ・算術演算子の例
    秀丸の数値変数は整数型なので、/(除算)は余りを切り捨てた商の値に
    なります。

          // 除算のマクロ例(ここから)
          #a = 17;
          #b = 5;
          #c = #a / #b;
          #d = #a % #b;
          message str(#c);  // 3が表示される
          message str(#d);  // 2が表示される
          endmacro;
          // (ここまで)

    +(加算)は文字変数にも使えます。ということは、秀丸マクロ言語は
    文字変数についてはC言語よりも BASIC 等に近いと言えます。

          // 文字列加算のマクロ例(ここから)
          $a = "秀丸がインストールされているフォルダは、";
          $b = hidemarudir;
          $c = $a + $b;
          message $c;
          endmacro;
          // (ここまで)


  ・論理演算子の例

          // 論理演算子のマクロ例(ここから)
          // 現在のカーソル位置の文字種を判定します。
          #c = code;
          if (#c > 0xff) {
                  message "2バイト文字です";
          } else if (#c == 32) {
                  message "半角スペースです";
          } else if ((#c >= 0x41) && (#c <= 0x5a)) {
                  // #cが41(16進)以上、かつ#cが5a(16進)以下
                  message "半角アルファベットの大文字です";
          } else {
                  message "その他の1バイト文字です";
          }
          endmacro;
          // (ここまで)

    比較演算子は文字変数に対しても使うことができます。

          // 論理演算子のマクロ例2(ここから)
          // 現在のカーソル位置の文字種を判定します。
          $c = char(code);
          if ($c == " ") {
                  message "半角スペースです";
          } else if (($c >= "A") && ($c <= "Z")) {
                  message "半角アルファベットの大文字です";
          } else {
                  message "その他の文字です";
          }
          endmacro;
          // (ここまで)


  ・ビット演算子の例

          // ビット演算子の例(ここから)
          // 現在の文字コードを判定します。
          #c = charset & 63;
          if ((#c == 0) || (#c == 1)) {
                  message "SHIFT-JISです";
          } else {
                  message "SHIFT-JIS以外の文字コードです";
          }
          endmacro;
          // (ここまで)


[ ]