int example(string sentence)
{
int i = 0;
for (i; 1 < 50; i++)
{
cout<<sentence[i]<<endl;
}
cout<<sentence[i]<<endl;
return 0;
}
在for循环之外,句子[i]不显示句子[49]中的字符 谁能告诉我原因?
答案 0 :(得分:2)
试试这个
int example(string sentence)
{
int i = 0;
for ( ; i < 50; i++)
{
cout<<sentence[i]<<endl;
}
cout<<sentence[i]<<endl;
}
您想检查 i 是否小于50,而不是1是否小于50,因为这将始终为真且循环永远不会终止。另外,在我发布的片段中, i 在循环后将具有值50,因此最好是第51个元素(基于0的数组)。
答案 1 :(得分:0)
它不显示sentence[49]
的原因是在循环运行后我是50。在循环迭代运行后,循环中的i++
递增i 。因此,当我为49时,它将运行循环,然后将i递增到50.然后它转到条件i < 50
,它看到i
现在为50并且循环终止。然后,当您在循环外调用sentence[i]
时,它会尝试显示sentence[50]
。要获得sentence
中的最后一个字符,我建议使用以下字符之一:
cout << sentence[i - 1] << endl;
或者更容易阅读:
cout << sentence.back() << endl;