gpt4 book ai didi

c++ - MISRA 5-2-1规则需要后缀表达式吗?

转载 作者:行者123 更新时间:2023-12-02 09:48:13 25 4
gpt4 key购买 nike

MISRA-2008中的规则5-2-1指出:

Each operand of a logical && or || shall be a postfix-expression. Exception: Where an expression consists of either a sequence of only logical && or a sequence of only logical ||, extra parentheses are not required.


以下是示例,直接来自文档本身:
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
有人可以指出我 posfix -表达式在哪里吗?他们看起来像主要的。我看不到 ++--之类的东西。

最佳答案

所有的主表达式都是后缀表达式。在这些示例中,唯一不是主表达式的postfix-expression是is_odd(y)
后缀表达式的grammar为:

postfix-expression:

primary-expression
postfix-expression [ expr-or-braced-init-list ]
postfix-expression ( expression-listopt )
simple-type-specifier ( expression-listopt )
typename-specifier ( expression-listopt )
simple-type-specifier braced-init-list
typename-specifier braced-init-list
postfix-expression . templateopt id-expression
postfix-expression -> templateopt id-expression
postfix-expression ++
postfix-expression --
dynamic_­cast < type-id > ( expression )
static_­cast < type-id > ( expression )
reinterpret_­cast < type-id > ( expression )
const_­cast < type-id > ( expression )
typeid ( expression )
typeid ( type-id )




primary-expression:

literal
this
( expression )
id-expression
lambda-expression
fold-expression
requires-expression

关于c++ - MISRA 5-2-1规则需要后缀表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63115808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com