后缀表达式和运算符的语法混淆
在下面的情况下,
int i = 0;
int j = 42;
i = j++;
我知道 ++
是 posfix 运算符,那么,j
是 posfix 表达式还是应该说 j++
是 posfix 表达式?
In the following case,
int i = 0;
int j = 42;
i = j++;
I know ++
is posfix operator, So, is j
a posfix expression or should you sayj++
is posfix expression ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从语法上来说,
j
和j++
都是后缀表达式。请参阅 C++ 2003 标准第 5.2 节中的语法:(
j
也是主表达式;j++
不是。)主表达式是一种后缀表达式(即使它不包含后缀运算符)主要是为了定义语言语法的便利性。除非您正在谈论解析 C++(或 C)源代码,否则将
j
引用为后缀表达式没有多大意义。Syntactically, both
j
andj++
are postfix-expressions.See the grammar in section 5.2 of the C++ 2003 standard:
(
j
is also a primary-expression;j++
is not.)The fact that a primary-expression is a kind of postfix-expression (even if it doesn't contain a postfix operator) is mostly a matter of convenience for defining the language syntax. There's not much point in referring to
j
as a postfix-expression unless you're talking about parsing C++ (or C) source code.