gpt4 book ai didi

C#:函数求值顺序(相对于 C)

转载 作者:太空狗 更新时间:2023-10-29 17:05:18 25 4
gpt4 key购买 nike

采用以下 C 代码 (K&R pg. 77):

push(pop() - pop()); /* WRONG */

书上说,由于 -/ 不是可交换运算符,因此评估 2 个 pop 函数的顺序是必要的(显然,要获得正确的结果)...因此您必须先将第一个函数的结果放入变量中,然后再进行算术运算,如下所示:

op2 = pop();
push(op2 - pop());

显然这是因为编译器无法保证函数的求值顺序(...为什么?)


我的问题是,C# 会做同样的事情吗?比如,在使用 C# 时我是否需要担心这类事情?就此而言,任何其他高级语言?

最佳答案

在 C# 中它是从左到右:http://blogs.msdn.com/oldnewthing/archive/2007/08/14/4374222.aspx


回复:C++ 命令

Apparently this is because the compiler can't guarantee in which order the functions are evaluated (...why?)

任何特定的编译器都可以保证顺序。问题是语言规范没有指定顺序,所以每个编译器都可以为所欲为。这意味着如果您想保证顺序,您必须在两个方法调用之间添加一个序列点。

关于C#:函数求值顺序(相对于 C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1215236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com