Ahm*_*hem 2 c java compiler-construction
我正在阅读这个问题,然后我做了以下内容.
a = b + (c - (b = c)) + (a - (c = a))
Run Code Online (Sandbox Code Playgroud)
我在C和Java中尝试过.它适用于java,但不适用于C.
当然,这取决于编译器如何评估这些表达式,在谷歌搜索之后,我找不到答案.
它在C中不起作用的原因是因为C没有准确指定何时c = a
发生.它可以在该语句中引用的另外两次之前或之后发生.
因此,根据编译器何时决定执行赋值c = a
,表达式的值会有所不同.它没有定义.
即如果b = c
在此之前进行评估c = a
,b
则将采用原始值c
.如果在之后进行评估,那么它将取值a
.
归档时间: |
|
查看次数: |
858 次 |
最近记录: |