在for循环外和在for循环内初始化字符串有什么区别?

我这里有两个代码是相同的,我在第一个代码中使用的唯一区别是在 for 循环内初始化的字符串,另一方面,我使用的是在 for 循环外初始化的字符串,但仍然得到不同的答案

在 for 循环内初始化的字符串:

#include <iostream>
#include <string>
using namespace std;
int main() {
    for (int i = 0; i < 10; i++) {
        string  TheString = "******";
        
        if (i < 3 || i > 6)
            TheString+= "     ";
        else {
            TheString += "aaaaa";
        }
        cout << TheString << endl;
    }
    return 0;
}

输出是这个形状:

******     
******     
******     
******aaaaa
******aaaaa
******aaaaa
******aaaaa
******     
******     
******     

在 for 循环外初始化的字符串:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string  TheString = "******";
    
    for (int i = 0; i < 10; i++) {
        if (i < 3 || i > 6)
            TheString+= "     ";
        else {
            TheString += "aaaaa";
        }
        cout << TheString << endl;
    }   
    return 0;
} 

输出是这个形状:

******     
******          
******               
******               aaaaa
******               aaaaaaaaaa
******               aaaaaaaaaaaaaaa
******               aaaaaaaaaaaaaaaaaaaa
******               aaaaaaaaaaaaaaaaaaaa
******               aaaaaaaaaaaaaaaaaaaa
******               aaaaaaaaaaaaaaaaaaaa

我真的对正在发生的事情感到困惑,并在此先感谢您。

回答

当您在循环内初始化字符串时,字符串在每次迭代中都会被初始化。
换句话说,该字符串"******"在每次迭代开始时设置为,然后添加一些内容。

另一方面,当您在循环外初始化字符串时,字符串仅在循环之前初始化一次。
换句话说,"******"在进入循环之前将字符串设置为一次,并且在第二次或以后的迭代中对新字符串进行字符串的添加。


以上是在for循环外和在for循环内初始化字符串有什么区别?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>