【问题标题】:How does the compiler interpret this expression?编译器如何解释这个表达式?
【发布时间】:2011-06-22 15:53:44
【问题描述】:

在阅读 C++ 书籍时,我遇到了一个没有正确解释的表达式(或者我可能只是不理解解释)。这是表达式:

c = a+++b;

这是什么意思?

c = a + (++b);  // 1

c = (a++) + b;  // 2

谢谢。

【问题讨论】:

  • @DeadMG,我说得再好不过了。除非您试图破译被正当解雇的其他人的代码,否则我没有必要询问混淆代码的某些部分的作用。
  • 你为什么不试试看a、b和c的结果值是什么?
  • 为什么不直接运行代码看看会发生什么? g++ 将其解释为您的第二个示例。我认为由于缺乏其他规则,它只是从左到右解释表达式。
  • @DeadMG,@Rocky Triton,这有什么愚蠢的?我不明白评论。你是什​​么意思混淆?这种表达方式可能很有用。
  • @afaolek:它被认为是dumb(虽然我不会使用这个词),因为你不会在实际代码中编写它(因为不清楚)。使用高级语言的全部意义在于它比汇编更容易阅读。使其难以阅读(这是混淆的含义)会适得其反。因此原始表达式没有用(因为它很难阅读),而 `c = (a++) + b;` (稍微)更有用。

标签: c++ expression increment


【解决方案1】:

其解释为:

c = a++ + b; //which is same as you're ve written : (a++) + b

关注the Maximal munch rule

【讨论】:

  • @kenny:从技术上讲,如果存在涉及运算符重载的任何 UDT,那就不同了...
  • 感谢您的链接和答案,Nawaz。
  • 对使用该语法的运算符重载说“不”。
猜你喜欢
  • 2013-04-23
  • 1970-01-01
  • 2018-12-06
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 2010-09-27
相关资源
最近更新 更多