-3

我被问到如果我尝试检索参考值然后尝试在同一行代码中更改它会发生什么。我的回答是什么都不会发生,因为我在没有遇到任何编译器错误(至少在 C# 或 Java 中)之前尝试这样做。

这个问题的真正答案是什么?

这是伪代码的示例:

Module main()
    Call changeNumber(10)
End Module

Module changeNumber(Integer Ref number)
    Set number = number * number
    Display number
End Module

(PS。很抱歉没有正确格式化/创建这篇文章。我在这里遇到了一些问题。)

4

3 回答 3

1

在您的特定伪代码中,什么都不会发生。

于 2013-02-05T02:07:31.267 回答
1

如果您要问的话,不会有不寻常的副作用。语言规范规定了特定的执行顺序(number * number被评估,然后设置为number),这可以防止任何问题的发生。

于 2013-02-05T02:08:21.557 回答
1

关于您在此问题后提出的问题-

实际上,在极少数情况下可能会出现问题,但这取决于您如何为数字和编码语言分配空间。考虑一下。您将数据类型明确命名为 int,如果接受的输入是大于 int 可以处理的数字(或负数)怎么办,最终是 x 整数长,然后将其乘以相同的数字,您分配的空间(通常具有整数填充)也可能没有足够的空间,对于这个特定实例来说太小,这将导致 C 中的分段错误。取决于您使用的语言,它是否比 C 更高级别,它可能对这种情况进行编译检查,但并非总是如此。

于 2013-02-06T21:09:40.000 回答