首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么不在++中使用+++++ b?

为什么不在++中使用+++++ b?
EN

Stack Overflow用户
提问于 2018-04-24 11:43:48
回答 2查看 0关注 0票数 0
代码语言:javascript
复制
int main ()
{
   int a = 5,b = 2;
   printf("%d",a+++++b);
   return 0;
}

此代码给出了以下错误:

错误:左值需要作为增量操作数

但是,如果我把整个空间a++ +++b,然后正常工作:

代码语言:javascript
复制
int main ()
{
   int a = 5,b = 2;
   printf("%d",a++ + ++b);
   return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2018-04-24 19:55:05

printf("%d",a+++++b);被解释为(a++)++ + b根据最大的蒙克法则!。

++(后缀)不计算为一个,lvalue但它需要它的操作数是一个lvalue

!6.4 / 4说,下一个预处理令牌是可以构成预处理令牌的最长字符序列“

票数 0
EN

Stack Overflow用户

发布于 2018-04-24 21:11:17

普通的词法分析器很不好用,所以你的代码被解释为

代码语言:javascript
复制
a++ ++ +b

解析器的输入是一串符号,所以你的代码就像这样:

代码语言:javascript
复制
[ SYMBOL_NAME(name = "a"), 
  SYMBOL_PLUS_PLUS, 
  SYMBOL_PLUS_PLUS, 
  SYMBOL_PLUS, 
  SYMBOL_NAME(name = "b") 
]

解析器认为语法错误:

代码语言:javascript
复制
a+++b 

是 :

代码语言:javascript
复制
a++ +b
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档