在0.8.22版本的更新中,我注意到有一个备受争议的更新,即在循环场景下不再进行溢出检查。接下来,我们将详细讨论一下这个循环不检查溢出
在0.8.22版本的更新中,我注意到有一个备受争议的更新,即在循环场景下不再进行溢出检查。 接下来,我们将详细讨论一下这个循环不检查溢出的设计机制。
满足unchecked循环的条件如下:
i < ...
的比较, 不能是<=或者其他的比较运算符。隐式转换:i<...
比较运算中,右侧类型必须可以隐式的转换成循环计数器i的类型
// 不能转换,所以必须检查溢出
for (uint8 i = 0; i < uint16(1000); ++i) {
}
i<...
,i必须是内置的整型类型i<...
,i不能再循环条件或循环体中修改
在标准JSON输入中,将settings.optimizer.details.simpleCounterForLoopUncheckedIncrement
设置为false
,以关闭这个优化。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!