コンテンツにスキップ

calc

Category: 計算

書式

(calc、式)

引数

引数 説明
式 計算する式。1 個だけ指定する

戻り値

計算結果。式が計算できないときは '式' 式が計算不能です。(エラー)、引数が 1 個でないときは 引数の個数が正しくありません。(エラー)。

解説

整数の式を計算します。全角の数字・演算子・カッコも使え、空白・全角空白・タブは無視されます。数値は 64 ビットの符号付き整数(-9223372036854775808 〜 9223372036854775807)で、結果があふれた場合は 64 ビットに丸められます(Mc201-5以降。それ以前は 32 ビットでした)。範囲を超える数値を書いたときは、最大値か最小値として計算されます。

カッコの入れ子は 200 段までです。超えると計算不能になります(Mc201-8以降。それ以前は、極端に深いとスタックを使い果たして異常終了していました)。

演算子

優先順位の高い順です。

演算子 数値どうし 文字列を含むとき
! + -(単項) 論理否定・符号 計算不能
^ べき乗 計算不能
* / % 乗算・除算(切り捨て)・剰余 文字列*数値 のみ、文字列を数値回くり返す
+ - 加算・減算 + は連結、- は左辺から右辺の文字列をすべて削除
< > <= >= 数値の比較 文字数の比較
== != 数値の比較 文字列としての比較
&& 論理積 計算不能
|| 論理和 計算不能
  • 文字列*数値 で作れる文字列は 4194304 文字(4Mi 文字)までです。超えるときは計算不能になります(Mc201-7以降。それ以前は、巨大な数値でメモリを使い果たすことがありました)。数値が 0 以下や、文字列が空のときは空文字列です。
  • 比較や論理演算の結果は 1(真)か 0(偽)です。
  • / と % の右辺が 0 のときは計算不能になります。
  • == と != は文字列として比較するので、01==1 は 0 です。
  • ^ はべき乗です(Mc201-2以降。それ以前はビットXORでした)。右結合で、* より優先されます(2^3^2 は 512)。負の指数は整数の結果になるので 0 です(底が 1 -1 のときを除く)。0^-1 は計算不能です。結果は 64 ビットに丸められます。
  • =~ は「左辺に右辺の文字列が含まれるか」、!~ は「含まれないか」を 1 / 0 で返します(正規表現ではなく、部分文字列の判定です。Mc201-2以降。それ以前は常に 0 でした)。
  • 全角の英字は半角にされません。ab==ab は 0 です。
  • 小数点を含む数値(1.5 など)は数値ではなく文字列として扱われるため、1.5+1 は 1.51 になります。小数の計算には calc_float を使います。

使用例

(calc、1+2*3)           → 7
(calc、7÷2)           → 3
(calc、(1+2)*3)         → 9
(calc、-7/2)            → -3
(calc、-7%3)            → -1
(calc、あ*3)            → あああ
(calc、あいう-い)       → あう
(calc、2^10)            → 1024
(calc、abc=~b)          → 1
(calc、abc<de)          → 0    (文字数の比較: 3 < 2)
(calc、1+1==2&&2+2==4)  → 1

関連項目