String.size()不会无限循环



所以我不知道是否真的是size((函数导致了这种情况,但每当我运行此代码时,我都希望它无限循环,但事实并非如此。我正在使用c++和visual studio。

string name = “Devin”;
for(int i = 4; i < name.size(); i—-)
{
printf(“%c”, name[i]);
}

这样考虑您的代码:

string name = "Devin";
for(int i = 4; i < name.size(); i--)
cout << name[i] << " i :" << i << "n";

你的输出是:

n i: 4
i i: 3
v i: 2
e i: 1
D i: 0

因为当比较signedunsigned时,编译器将signed值转换为unsigned。对于平等,这并不重要,-1 == (unsigned) -1。对于其他比较而言,这很重要,例如以下情况为真:-1 > 2Uname.size()unsignedi现在要去unsigned号,循环结束。为了更好地理解;我使用了5而不是name.size(),因为"Devin"的长度是5

for(int i = 4; i < 5; i--)
cout<< name[i]<<" i: "<<i<<"n";

输出为:

// Your i is going to negetive and infinity loop like 
i : -1 
i : -2
.
.
.
// and maybe you got segmentation fault (core dumped)
// Because your string just have 5 indexes 

相关内容

  • 没有找到相关文章

最新更新