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