我真的被这个简单的问题搞糊涂了。 这是我的代码:
#include <iostream>
#include <string>
int main()
{
std::string str = "bb";
int counter;
for (counter = str.length() - 1; counter >= str.length() - 2; counter--)
{
std::cout << "counter: " << counter << std::endl;
}
}
基本上,它应该只打印两行然后终止程序,但它会继续打印行。事实上,循环并没有在 counter = -1 处停止,这很奇怪!为什么会这样?
最佳答案
std::string.length()
是无符号的,所以 counter >= str.length() - 2
中的 counter
被转换为无符号值,公式不成立。
尝试使用 counter + 2 >= 0 && counter + 2 >= str.length()
代替。
关于c++ - string.length() 造成麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36602148/