【发布时间】:2014-07-24 20:25:30
【问题描述】:
查看 C 语法,似乎输入 ++i 可以有 2 个推导:要么被视为前缀增量运算符,要么被视为 2 个整数提升,如 +(+i)(--i 也是如此)。
我错过了什么?
unary-expression:
postfix-expression
++ unary-expression
-- unary-expression
unary-operator cast-expression
sizeof unary-expression
sizeof ( type-name )
unary-operator: one of
& * + - ~ !
cast-expression:
unary-expression
( type-name ) cast-expression
【问题讨论】:
-
@JonathanLeffler 因此根据 Robert 在此 meta question 中的 cmets,这些不是重复的,除非它是精确的 dup 或 dup 是规范的问题/答案。我发现这个位置有点令人惊讶,但是关于 dups 的元问题确实有一些相互矛盾的答案。我试图得到澄清,但到目前为止还没有。
-
基本问题是两种情况下的最大咀嚼规则;他们真的是同一个问题。也许我应该改用What is the name of this operator: "-->"?? (主要是在开玩笑;那是相当不同的。)但是还有许多其他可能的重复——所有这些都归结为最大咀嚼规则。
-
@JonathanLeffler 好吧,他的论点是问题必须是一个重复,只是把它归结为相同的答案并不能使它成为一个重复。考虑到他是主持人,我必须认真对待这个职位。
-
虽然立场似乎过于僵化。
标签: c grammar lexical-analysis ambiguity unary-operator