C++之循环体内变量

今天做PAT题目时候看人家解答:

 1 #include <cstdio>
 2 #include <set>
 3 using namespace std;
 4 int main() {
 5     int y, n;
 6     scanf("%d%d", &y, &n);
 7     for (int i = y; i <= 3012; i++) {
 8         set<int> s; //每次循环,s都是在同一个地址
 9     //    printf("%p
", &s);
10         int num = i;
11     //    printf("%p
", &num);
12         for (int j = 0; j < 4; j++) {
13             s.insert(num % 10);
14             num /= 10;
15         }
16         if (s.size() == n) {
17             printf("%d %04d", i - y, i);
18             break;
19         }
20     }
21     return 0;
22 }

突然想到第8行和第10行兴义的变量是否每次都不一样,惨后输出它们的地址试试发现都是一样的,也就是说,逻辑上其实在每一次的循环中它们都应该是不一样的,因为是“新定义”的嘛。然而,如果真的就不一样了,倘若循环次数很大的话,那岂不是内存告急~想想真是自己太傻

原文地址:https://www.cnblogs.com/fallenmoon/p/7106038.html