【发布时间】:2018-04-14 19:18:50
【问题描述】:
我有一个由 [1,2,3,4,5,.,..] 之类的字符组成的数组,并且我有一个看起来像
的循环 for (size_t i = 0; i < size; ++i)
os << data[i]; // os is std::ostream&
此循环以正确的顺序打印数组,没有任何错误。但是当我使用这个循环向后打印时
for (size_t i = (size - 1); i >= 0; --i)
os << data[i];
我收到分段错误错误。为什么会发生这种情况?
【问题讨论】:
-
如您所知,
size_t是一个无符号值。你能想到任何负的无符号值吗? -
不幸的是,我无法控制类型。有没有其他方法可以使它起作用?
-
我会为 i 使用 int 类型,但如果你不能。然后我猜你可以在 os 之后使用一次 break 语句 i = 0
-
当然有一种方法可以使用
size_t使其工作。您只需要了解size_t不能为负数,并相应地调整您的逻辑。您可以使用 do-while 循环,使用后递减运算符完成比较,或者仍然使用for循环,但比较> 0,并在循环开始时递减,而不是在结束时递减。
标签: c++ arrays segmentation-fault