一个C ++程序。为什么这段代码有效?

时间:2016-01-24 09:35:34

标签: c++

int main()
{
  int a=1;
  int b=2;
  int c=a+++b;
  cout<<"c"<<c<<endl;
}

c的值结果为 3 。虽然,它给了我一个错误的c = a ++ b 。这里发生了什么?为什么 c = a +++ b 有效?

3 个答案:

答案 0 :(得分:2)

a+++b“工作原因”的关键部分,而a++b不是定义C和C ++语言解析的方式。它就是所谓的'贪婪'解析器。它将组合尽可能多的元素以生成有效的令牌。

因此,鉴于它是一个贪婪的解析器,a++b变为a++ b,这是无效的。 a+++b变为a++ + b,这在语法上是有效的 - 这是否是您想要的另一个问题。如果要编写a + +b,则需要空格来分隔标记。

答案 1 :(得分:1)

看起来 a 是后增量,然后添加到 b ,间距不正确。例如a ++ + b。评估变量 a 然后递增。据说a ++ b是无效的语法。

答案 2 :(得分:1)

查看C++ operator precedence

(++)post-increment的优先级最高,最后是(a++) + b