C++ 字符串 size_t

标签 c++ g++ runtime-error 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 不能存储负数,因此条件总是为真

关于C++ 字符串 size_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38289521/

相关文章:

c++ - 加倍加倍是否会导致0.0?如果没有,该如何实现?

c++ - 将 C++ 编译成 "real"程序

c++ - 如何在我的 g++ 编译器中满足 C++ 标准版本?

c - 为什么我的 C 程序显示的 int 与应有的不同

c++ - 在 C++ 函数中分配大型本地内存的最佳方法

c++ - Qt qInstallMessageHandler编码

c++ - 使用迭代器执行对象操作的函数

c++ - 尝试使用外部 header 编译程序时出现问题

java - 为什么这个程序在 jcreator 上给出运行时错误,但在 netbeans 上却没有?

deployment - 部署JavaFX应用程序时出现运行时错误