【发布时间】:2011-11-21 01:19:17
【问题描述】:
下面的代码让我很困惑
int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);
我预计输出是 3,5,8,主要是因为 a++ 表示 2 +1 等于 3,而 3 + 5 等于 8,所以我预计是 3,5,8。结果是3,5,7。有人可以解释为什么会这样吗?
【问题讨论】:
-
a++绝对不是指2+1。 :) -
这些只是书中的练习,但它们让我思考。我一直弄错了!所以它不是生产代码或任何东西
-
除非您正在编写 C++ 解析器/编译器,否则您永远不必编写/考虑像
a+++b这样的表达式,稍后阅读代码的人可以轻松地将其解释为a + (++b),其计算结果为8. 空格和括号是免费的,在这种情况下会让每个人的生活更轻松。 -
@BlueRaja-DannyPflughoeft 从本质上讲,这并不是一个真正的最大咀嚼问题,它基本上是对后增量如何工作的误解,按照今天的标准,这基本上是题外话。
标签: c++ c visual-c++