C 一元运算符

问题描述 投票:0回答:1

我尝试理解 C 语言中一元运算符背后的语法。根据此版本的标准link,第 6.5.3 节中的一元运算符具有以下语法:

unary-expression:
  ...
  ++ unary-expression
  ...

这意味着从语法的角度来看,这样的事情是合法的:

a = ++++b
。然而,gcc 编译器提供了这个错误:
lvalue required as increment operand

我不太明白为什么?

根据标准,

++b
相当于
(b += 1)
。这意味着
a=++++b
应扩展为
a=((b+=1)+=1)
。为什么编译器会出现上面的错误?

c compiler-errors compiler-construction
1个回答
0
投票

在 C 语法中,

++b
不是左值,因此不能是
++
运算符的操作数。

请注意,C++ 语法在这方面可能有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.