为什么结果是 10 10 2不是只有两个printf吗
答案:2 悬赏:0 手机版
解决时间 2021-03-12 23:35
- 提问者网友:沉默的哀伤
- 2021-03-12 05:15
为什么结果是 10 10 2不是只有两个printf吗
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-03-12 05:41
显然,你对swith的用法有误解。
每个case结束应该都break的,不然case 2的语句执行完,会继续执行case 3的语句。追问我想的是先是case 3 然后case 2最后退出 不对吗?#include
int main()
{
int a[7] = { 2,4,6,8,10,12,14 };
int *p;
p = a + 5;
int i;
for (i = 3;i;i--)
{
switch (i)
{
case 1:
case 2:printf("%d", *p++);break;
case 3:printf("%d", *(--p));
}
}
return 0;
}这是源码运行结果是101012??????追答笔误,第三次for循环时,i=1,
case 1的语句执行完,因为没有break,会继续执行case 2的语句
所以又会printf("%d", *p++)
建议每个case结束时都加break,并增加default分支处理意料外的取值。
每个case结束应该都break的,不然case 2的语句执行完,会继续执行case 3的语句。追问我想的是先是case 3 然后case 2最后退出 不对吗?#include
int main()
{
int a[7] = { 2,4,6,8,10,12,14 };
int *p;
p = a + 5;
int i;
for (i = 3;i;i--)
{
switch (i)
{
case 1:
case 2:printf("%d", *p++);break;
case 3:printf("%d", *(--p));
}
}
return 0;
}这是源码运行结果是101012??????追答笔误,第三次for循环时,i=1,
case 1的语句执行完,因为没有break,会继续执行case 2的语句
所以又会printf("%d", *p++)
建议每个case结束时都加break,并增加default分支处理意料外的取值。
全部回答
- 1楼网友:归鹤鸣
- 2021-03-12 06:40
能把源码发一下吗追问#include
int main()
{
int a[7] = { 2,4,6,8,10,12,14 };
int *p;
p = a + 5;
int i;
for (i = 3;i;i--)
{
switch (i)
{
case 1:
case 2:printf("%d", *p++);break;
case 3:printf("%d", *(--p));
}
}
return 0;
}这个?
int main()
{
int a[7] = { 2,4,6,8,10,12,14 };
int *p;
p = a + 5;
int i;
for (i = 3;i;i--)
{
switch (i)
{
case 1:
case 2:printf("%d", *p++);break;
case 3:printf("%d", *(--p));
}
}
return 0;
}这个?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯