【发布时间】:2021-10-27 08:42:50
【问题描述】:
i的初始值不等于5,输出无数个数。
int main() {
vector<int> nums = {1, 2, 1};
auto size = nums.size();
for(auto i = 2 * size - 1; i >= 0; i--) {
// do_stuff()
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
【问题讨论】:
-
尝试将
i >= 0更改为i > 0。nums.size()返回size_type,这是一个无符号类型。将其递减到超过0可能会导致垃圾值可能不适用于您的情况。 -
nums.size()是无符号的,所以size是无符号的,所以i是无符号的,所以i >= 0始终为真,减零会给你一个巨大的数字.. -
@Tharsalys 无符号下溢和上溢是明确定义的,不会产生“垃圾”(尽管结果通常与上下文中的垃圾一样有用)。
标签: c++ type-deduction