与后缀表达式和操作符的语法混淆

Confusion with syntax for postfix expressions and operators

本文关键字:语法 操作符 后缀 表达式      更新时间:2023-10-16

在下列情况下,

int i = 0;
int j = 42;
i = j++;

我知道++是后缀运算符,那么,j是后缀表达式还是应该说j++是后缀表达式呢?

语法上,jj++都是后缀表达式。

参见c++ 2003标准第5.2节中的语法:

postfix-expression:
    primary-expression
    ...
    postfix-expression ++

(j也是主表达;j++不是。)

主表达式是一种后缀表达式(即使它不包含后缀操作符)这一事实主要是为了方便定义语言语法。将j称为后缀表达式没有多大意义,除非您正在讨论解析c++(或C)源代码。