int main()
{
int a=1;
int b=2;
int c=a+++b;
cout<<"c"<<c<<endl;
}
c的值结果为 3 。虽然,它给了我一个错误的c = a ++ b 。这里发生了什么?为什么 c = a +++ b 有效?
答案 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)
(++)post-increment的优先级最高,最后是(a++) + b
。