繁体   English   中英

C ++ string size_t

[英]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无法存储负数,因此条件始终为true

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM