C++ string size_t



以下代码按预期工作,即反向打印字符串

std::string s("abcd");
for (int i=s.length()-1; i>=0; --i) {
    std::cout << s[i];
}

但是,下面的代码进入无限循环打印垃圾字符,最后崩溃-

std::string s("abcd");
for (std::size_t i=s.length()-1; i>=0; --i) {
    std::cout << s[i];
}

为什么使用size_t作为i类型会使程序崩溃?

我在Windows上使用MinGW附带的g ++。

C:/MinGW/bin/g++ --version
g++ (GCC) 6.1.0

这是因为std::size_t不能存储负数,因此条件总是为真

无符号类型永远不会有负值。因此,有条件的 i>=0将始终评估为true.

相关内容

  • 没有找到相关文章

最新更新