Questions tagged «range-checking»

7
通过强制转换为uint而不是检查负值来执行范围检查是否更有效?
我在.NET的List源代码中偶然发现了这段代码: // Following trick can reduce the range check by one if ((uint) index >= (uint)_size) { ThrowHelper.ThrowArgumentOutOfRangeException(); } 显然,这比(?)更有效 if (index < 0 || index >= _size) 我对这招背后的理由感到好奇。一条分支指令真的比两次转换贵uint吗?还是正在进行其他优化,以使此代码比其他数字比较快? 为了解决房间里的大象问题:是的,这是微优化,不,我不打算在代码中到处使用它–我只是很好奇;)

2
为什么Python允许序列的切片索引超出范围?
因此,我只是遇到了我觉得很奇怪的Python功能,并希望对此进行一些澄清。 以下数组操作在一定程度上是有意义的: p = [1,2,3] p[3:] = [4] p = [1,2,3,4] 我想这实际上只是将这个值附加到末尾,对吗? 为什么我可以这样做? p[20:22] = [5,6] p = [1,2,3,4,5,6] 更是如此: p[20:100] = [7,8] p = [1,2,3,4,5,6,7,8] 这似乎是错误的逻辑。看来这应该引发错误! 有什么解释吗? -这只是Python所做的奇怪的事情吗? -有目的吗? -还是我在想这个错误的方式?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.