[英]How compilers evaluate mathematical expressions?
我正在阅读这个问题,然后我做了以下内容。
a = b + (c - (b = c)) + (a - (c = a))
我在C和Java中尝试过。 它适用于java,但不适用于C.
当然,这取决于编译器如何评估这些表达式,在谷歌搜索之后,我找不到答案。
它在C中不起作用的原因是因为C没有准确指定c = a
何时发生。 它可以在该语句中引用的另外两次之前或之后发生。
因此,根据编译器何时决定执行赋值c = a
,表达式的值将有所不同。 它没有定义。
即如果在c = a
之前评估b = c
那么b
将取c
的原始值。 如果是后评估,然后它会采取的值a
。
您可以参考java 表达式文档以获得完美答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.