这段代码是:
y = x = x + 1;
C 中未定义的行为?
回答你的问题
No.
会发生什么
这将会发生:
int x = 1; /* ASSUME THIS IS SO */
y = x = x + 1;
/* Results: */
y == 2;
x == 2;
它是如何编译的
与以下相同:
x += 1;
y = x;
为什么这不是未定义的
因为你不写x
用你读到的同样的表达方式。你只需将其设置为自身+ 1
,然后赋值y
的值x
.
你的未来
如果您发现代码令人困惑,可以使用括号以提高可读性:
y = x = (x + 1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)