在做题时发现的一个小内容
先看代码
#include <stdio.h> int main() { int count = 0; for (int i = 1; i <= 4; i++) { for (int i = 0; i < count; i++) { printf(" "); } for (int t = 0; t < 4; t++) { printf("%d", i); } count++; printf("\n"); } }
就是这一段
for(int i=1;i<=4;i++)
{
for(int i=0;i<count;i++)
}
可以看到,我在for循环初始位置定义了一个i变量
而在for循环内部又定义了一次i变量
在以往学习中,我只知道不能重复定义变量名
但这样写还能运行成功
这是为什么呢?
在调试时发现出现了两个i变量
我便猜想这两个i所存储的地址可能不同
我们来分别输出两个i的地址观察一下
在16进制下,二者地址相差了20
可见,两个i变量所存储的地址是不一样的
这也解释了为什么能同时存在两个i变量还能运行成功
我以为只是vs编译器支持这样的写法,但在学校oj、牛客等平台上也能运行。以上是一个小发现,若有叙述不正确的地方,请指出。
2022/11/19 20:07