120
10
30260
30后面没有换行符
我粗暴地理解为:被创建的变量的生存期 不超过其创建时所存在大括号的范围,超过大括号时,这个变量被删除。同一个大括号里面同一个变量无法创建两次,嵌套与被嵌套的大括号里,同名变量优先使用最近创建的那个变量。
int main()
{
int a = 20; //a==20
int score = a + 100; //score==120 将这个score标记为score_0
printf("%d\n", score); //第一行输出: 120
{
int score = 50; //重新定义局部变量 score==50 假设标记它为 score_1
{
score = 10; //将score_1重新赋值为10
printf("%d\n", score); //输出score_1 : 10
} a = 10; // a==10
}
//到此为止 score_1被删除
{
score = a + 250; //将score_0赋值为a+250=260
int score = 30; //重新定义一个score,假设标记为score_2,score_2==30
printf("%d", score); //输出score_2 :30 但是后面没有加换行符 所以后面的输出会直接跟在30后面
}
//到此为止 score_2 被删除
printf("%d\n", score); //输出score_0的值 :260
return 0;
}
|