问题:
#include <stdio.h>
int main() { // int a; // int a; for(int i=0;i<5;i++) { int b; b++; printf("%d",b); } return 0; } 上面这个程序在for循环中多次int b都没有关系,程序都正确。 但是下面的程序在for循环外多次int a就出现错误了,请问为什么呢? #include <stdio.h> int main() { int a; int a; for(int i=0;i<5;i++) { int b; b++; printf("%d",b); } return 0; } 解答:
下面你的程序出现了重复定义的错误,即一个程序中不能同时定义同名的两个变量,你在程序中int a; 后变量a的作用域是全局的,定义第二个int a;后作用域也是全局的,这是绝对不允许的。
上面的代码中,你在for循环中定义了int b; 变量b的作用域就在for循环体内,循环一次后局部变量b就会消失,当执行第二次for循环时,会重新定义局部变量b,不会出现重复定义。因此编译时不会出错!!! |
|
来自: dingzi4178 > 《程序语言》