gpt4 book ai didi

c - 使用 ptrdiff_t 或 size_t 进行索引

转载 作者:行者123 更新时间:2023-11-30 17:32:53 24 4
gpt4 key购买 nike

我养成了用 size_t 而不是 int 声明 for 循环索引的习惯。然而,当我向后迭代数组时,即检查索引是否大于或等于零时,这已经多次困扰我:

for (size_t i = n-1; i >= 0; i--) {
// ...
}

当主体运行i == 0时,它会递减并回绕,可能到SIZE_T_MAX。这使得中断条件成为同义反复。可能有一些巧妙的位操作来检查可能的下溢,但使用 ptrdiff_t 代替不是更简单吗?

解决这个问题的正确惯用 C 方法是什么? size_t 加上一点扭曲或 ptrdiff_t 并且对语义感到不舒服?

最佳答案

向后循环应该如下所示:

for (size_t i = 0; i != n; ++i) {
arr[n - i - 1] = foo();
}

如果您愿意的话,n - i - 1 是对应于 i 的“反向迭代器”。

关于c - 使用 ptrdiff_t 或 size_t 进行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23971495/

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