gpt4 book ai didi

swift - 未定义的行为,或 : Does Swift have sequence points?

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:01 25 4
gpt4 key购买 nike

在C/C++中,第二条语句

int i = 0;
int j = i++ + i++ + ++i;

同时调用

  • 未指定的行为,因为操作数的评估顺序未指定,并且
  • 未定义的行为,因为对同一对象 i 的副作用相对于彼此是无序的。

例子见

现在,鉴于 Swift 被设计为一种安全语言,那么什么是这里对应的情况?结果是

var i = 0
let j = i++ + i++ + ++i

定义明确?可以从中的语言引用中得出结论吗?Swift book j == 4?

最佳答案

Apple 开发者和 Swift 设计师 Chris 回答了这个问题Lattner 在 Apple 开发者论坛中 https://forums.developer.apple.com/thread/20001#63783 :

Yes, the result of that expression will always be 4. Swift evaluates expressions left to right, it isn't undefined or implementation defined behavior like C.

克里斯还补充道:

That said, if you write code like that, someone trying to maintain it will probably not be very happy with you

同意!这是一个极端的例子来证明这个问题。

关于swift - 未定义的行为,或 : Does Swift have sequence points?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705320/

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