【发布时间】:2016-12-26 06:49:27
【问题描述】:
a = 5;
c = (b =a+2) - (a=1);
在 kn king 的《c 编程现代方法》一书中写道,执行第二条语句的效果将导致 6 或 2,因为它是 c 的未定义行为,但在其他书籍(如 Dennis 的 c)中写道将从左到右执行。哪一个是正确的?
【问题讨论】:
-
这是未定义的行为。
-
什么是“C by Dennis”?如果您在谈论K&R,它并没有说明从左到右执行的任何内容。
-
你确定金这么说吗?哪个版本和页码?
-
无法保证结果是 6 或 2 — 它们是结果的可能值,但 0 和 256 以及任何其他数字也是如此。该代码表现出未定义的行为。搜索“鼻恶魔”。
标签: c expression undefined-behavior evaluation