gpt4 book ai didi

c++ - 赋值运算符不是序列点的任何充分理由?

转载 作者:IT老高 更新时间:2023-10-28 21:47:18 25 4
gpt4 key购买 nike

operator = 不是序列点有什么好的理由吗?在 C 和 C++ 中。

我很难想出一个反例。

最佳答案

根据要求:

一般来说,事情需要一个理由来成为一个序列点。他们不需要理由成为序列点;这是默认设置。

例如,由于短路行为,&& 必须是序列点:如果左侧为假,则右侧 不得评估。 (这不仅仅是关于优化;右侧可能有副作用,和/或取决于左侧是否为真,如 ptr && ptr->data。)因此必须先评估左侧,然后再评估右侧,以便查看是否应该评估右侧。

= 不存在这个原因,因为虽然两边都有“评估”要做(虽然两边可以出现的内容有不同的限制:左边必须是一个左值 - l 不代表“左”,顺便说一句;它代表“位置”,如内存中的位置 - 我们不能分配给临时或文字),首先评估哪一方并不重要 - 只要双方在实际分配之前评估。

关于c++ - 赋值运算符不是序列点的任何充分理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362501/

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