先看代码:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 int i=40; 7 printf("Begin:\t%i\n",i); 8 { 9 printf("Before \t int i=10 i=%i\n",i); 10 int i=10; 11 printf("After \t int i=10 i=%i\n",i); 12 //goto lbl; 13 } 14 { 15 printf("Before \t int i=20 i=%i\n",i); 16 i=20; 17 printf("After \t int i=20 i=%i\n",i); 18 { 19 printf("Before \t int i=30 i=%i\n",i); 20 int i=30; 21 printf("After \t int i=30 i=%i\n",i); 22 //lbl:; 23 } 24 printf("After \t {} i=%i\n",i); 25 } 26 printf("End:\t%i\n",i); 27 return 0; 28 }
运行结果:
总结:
1、如果{}的外部有定义,在内部可直接使用,影响外部定义(第10行)
2、如果{}的外部有定义,在内部又重新定义,则使用内部定义,生命周期为{}结束,并且{}外的值不变(第16行)
类似:
1 if(1) 2 { 3 ... 4 }