【发布时间】:2014-02-16 11:53:51
【问题描述】:
#include <stdio.h>
int main()
{
int a = 10;
if (a == a--)
printf("TRUE 1\t");
a = 10;
if (a == --a)
printf("TRUE 2\t");
}
为什么第二个 if 语句为真?
输出是: 对 1 对 2
这是由于未定义的行为,因为我将同一个变量与其递减值进行比较吗?
【问题讨论】:
-
有效问题。另一方面:不要编写明显不正确的代码。将代码压缩为尽可能少的行不是目标。
-
与其发帖问这个问题,我认为如果你将它编译成汇编并检查输出,你会学到更多。 (如果您也在调试器中运行它,您可能可以检查正常编译的程序集输出。)
-
严重错误(不正确!)标题。
标签: c post-increment pre-increment