C++ A C++;节目。为什么这个代码可以工作? intmain() { INTA=1; int b=2; int c=a+++b; cout
看起来像是a是后增量,然后以不正确的间距添加到b。例如a++b。变量a被求值,然后递增。也就是说a++b是无效语法。请查看C++ A C++;节目。为什么这个代码可以工作? intmain() { INTA=1; int b=2; int c=a+++b; cout,c++,C++,看起来像是a是后增量,然后以不正确的间距添加到b。例如a++b。变量a被求值,然后递增。也就是说a++b是无效语法。请查看 (++)后增量有最高的优先级,Sou-YouthUp以(A++)+B< /C> > (p>代码> A+++b Works',而A++B不是C和C++语言解析的方式,这就是所谓的“贪心”解析器,它将尽可能多地组合成一个有效的令牌。 因此,假设它是一个贪婪的解析器,a++b变成了a++b,这是无效的。a++b变成了a++b,这在语法上是有效的-这是否是你想要的是另一回事。如果你
(++)后增量有最高的优先级,Sou-YouthUp以<代码>(A++)+B< /C> > <>(p>代码> A+++b Works',而
因此,假设它是一个贪婪的解析器,
a++b
变成了a++b
,这是无效的。a++b
变成了a++b
,这在语法上是有效的-这是否是你想要的是另一回事。如果你想写a++b
,那么你需要空格来分隔令牌。它被解析为a+++b
是一个增量和一个加法。@克里斯,你可能是对的。虽然C是一个类似的概念。与此相关的一个关键短语是maximal munch。也就是说,a+++b
是a+++b
,而不是a+++b
。
int main()
{
int a=1;
int b=2;
int c=a+++b;
cout<<"c"<<c<<endl;
}