【发布时间】:2011-07-23 17:24:43
【问题描述】:
为什么下面这段C代码打印12 12 12
int main(int argc, char const *argv[]) {
int a = 2, *f1, *f2;
f1 = f2 = &a;
*f2 += *f2 += a += 2.5;
printf("%i %i %i\n", a, *f1, *f2);
return 0;
}
【问题讨论】:
-
真正的问题是你为什么要写这样的代码?
-
interview-question :P,也会添加该标签。可悲的是,他们问这样的问题让我很恼火。
-
至少这个无用的 UB 问题的一周有一点变化......
-
我希望他们提出这个问题的目的是让您回答代码具有未定义的行为,即使没有,它也会被令人反感地混淆并且永远不应该编写......
-
我同意,但我无能为力,也没有名为“未定义行为”的选项
标签: c undefined-behavior expression-evaluation