繁体   English   中英

编译器如何评估数学表达式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM