math

求解数学表达。

math(EXPR <variable> "<expression>" [OUTPUT_FORMAT <format>])

求解一个数学<表达>并设置<变量>为求得的值。表达式的结果必须是一个可表示为 64 位有符号整数的数。浮点数输入是无效的,例如1.1 * 10。非整数结果(如3 / 2)会被截断。p

数学表达必须用字符串给出(即用双引号引起来)。一个示例是"5 * (10 + 13)"。支持的运算符为+-*/%|&^~<<>>(...);这些运算符在 C 代码中的含义与这里相同。

始于版本 3.13: 0x为前缀的十六进制数将被识别, 如同在 C 代码中一样。

始于版本 3.13: 结果根据选项OUTPUT_FORMAT进行设置,其中<格式>为以下之一:

HEXADECIMAL

十六进制表示法,如同在 C 代码中一样,即以"0x"开头。

DECIMAL

十进制表示法。如果没有指定OUTPUT_FORMAT,也会使用这种表示法。

例如

math(EXPR value "100 * 0xA" OUTPUT_FORMAT DECIMAL)      # value is set to "1000"
math(EXPR value "100 * 0xA" OUTPUT_FORMAT HEXADECIMAL)  # value is set to "0x3e8"