今天在帮同学看代码bug的时候突然发现如下代码是一个死循环:
int main()
{
string s="";
cout<<s.length();
for(int i=0;i<(s.length()-1);i++)
{
i--;
}
return 0;
}
我们尝试了很久,始终没有发现原因。后来尝试在网上搜索这段代码,发现了这篇博客:C++学习笔记26 size()、length()等函数的返回值的问题_s.size和s.length-CSDN博客使我们大彻大悟!无符号整数-1就变成了无穷大,因此将代码改为如下就可以成功运行了:
int main()
{
string s="";
cout<<s.length();
for(int i=0;i<(int)(s.length()-1);i++)
{
i--;
}
return 0;
}