MISRA-2008规则5-2-1规定
逻辑&
或的每个操作数都应该是后缀表达式。 异常:如果表达式由只包含逻辑
&
的序列或只包含逻辑的序列组成,则不需要额外的括号。
下面是文档本身的示例:
if (x == 0 && ishigh) // Non-compliant
if (( x == 0 ) && ishigh) // Compliant
if (x || y || z) // Compliant by exception, if x, y and z bool
if (x || y && z) // Non-compliant
if (x || (y && z)) // Compliant
if (x && !y) // Non-compliant
if (x && (!y)) // Compliant
if (is_odd(y) && x) // Compliant
if ((x > c1) && (y > c2) && (z > c3)) // Compliant - exception
if ((x > c1) && (y > c2) || (z > c3)) // Non-compliant
if ((x > c1) && ((y > c2) || (z > c3))) // Compliant as extra() used
有人能告诉我后缀表达式在哪里吗? 它们看起来是初级的。 我没有看到类似++
或--
的内容。
所有主表达式都是后缀表达式。 在这些示例中,唯一不是主表达式的后缀表达式是is_odd(y)
。
后缀表达式的语法是:
后缀-表达式:
主表达式
后缀-表达式[
表达式或带括号的初始化列表]
后缀-表达式(
表达式-列表选择)
简单类型说明符(
表达式-列表选择)
类型名称说明符(
表达式-列表选择)
简单类型说明符带括号的初始化列表
后缀-表达式。
模板选择ID-表达式
后缀- /code>类型ID>
(
表达式)
TypeID
(
表达式)
TypeID
(
类型ID)
和
主表达式:
文字此
(
表达式)
ID-表达式
lambda-表达式
fold-表达式
required-表达式