黑马程序员技术交流社区
标题:
输出结果
[打印本页]
作者:
chunjiang
时间:
2015-9-1 14:33
标题:
输出结果
#include <stdio.h>
int main()
{
int a = 20;
int score = a + 100;
printf("%d\n", score);
{
int score = 50;
{
score = 10;
printf("%d\n", score);
}
a = 10;
}
{
score = a + 250;
int score = 30;
printf("%d", score);
}
printf("%d\n", score);
return 0;
}
score的输出是什么?
作者:
唐肖虎
时间:
2015-9-1 16:38
120、10、30、260
作者:
coding_wang
时间:
2015-9-1 17:41
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;
}
作者:
羊口羊口羊
时间:
2015-9-2 00:31
coding_wang 发表于 2015-9-1 17:41
120
10
30260
嘻嘻。看完秒懂,啦啦啦,谢啦
作者:
lxszl
时间:
2015-9-2 01:13
120
10
30
260
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2