math

求值一个数学表达式。

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

求值一个数学 <expression> 并将结果值赋给 <variable>。表达式的结果必须能表示为 64 位有符号整数。浮点数输入无效,例如 1.1 * 10。非整数结果,例如 3 / 2 会被截断。

数学表达式必须用字符串形式给出(即用双引号括起来)。例如 "5 * (10 + 13)"。支持的运算符有 +-*/%|&^~<<>>(...);它们与 C 代码中的含义相同。

3.13 版本新增: 十六进制数字可以通过前缀 0x 来识别,与 C 代码相同。

3.13 版本新增: 结果将根据 OUTPUT_FORMAT 选项进行格式化,其中 <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"