14.2.7 Macro Expressions
宏表达式用于条件展开和循环,这些将在后续章节中描述。宏表达式可以使用下列运算符,按运算符优先级从高到低列出:
()
括号覆盖默认的运算符优先级。
!EQ !NE !GT !LT !GE !LE = ~= <> > < >= <=
关系运算符比较其操作数并产生布尔结果,‘0’表示假,‘1’表示真。
这些运算符总是将其操作数作为字符串进行比较。当字符串是数字时这可能令人意外,因为例如 1 < 1.0 和 10 < 2 都求值为‘1’(真)。
比较区分大小写,因此 a = A 求值为‘0’(假)。
!NOT ~!AND &!OR |
逻辑运算符将其操作数解释为布尔值,其中带引号或不带引号的‘0’为假,其他任何值为真,并产生布尔结果,‘0’表示假,‘1’表示真。
宏表达式不包含任何算术运算符。
表达式中的操作数可以是单个记号(包括宏参数名)或宏函数调用。无论哪种情况,表达式求值器都会对该操作数去引号,因此 1 = '1' 为真。