关于C语言中IF函数的问题 50
C语言课本上有这么一道题目:问下列程序段的输出结果是intmain(void){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;pri...
C语言课本上有这么一道题目:问下列程序段的输出结果是
int main(void)
{
int a=2,b=-1,c=2;
if (a<b)
if (b<0)
c = 0;
else c++;
printf("%d\n",c);
return 0;
}
老师报的答案是2,但是我觉得是3。我认为
if (a<b)
if (b<0)
c = 0;
else c++;
等价于
if (a<b)
{
if (b<0)
c = 0;
}
else c++;
所以我觉得是3,不是说if 后面如果不加“{}”的话只进行一句的吗,那么下面的 else c++;是和第一个if配对的才对吧。求C语言前辈解答。 展开
int main(void)
{
int a=2,b=-1,c=2;
if (a<b)
if (b<0)
c = 0;
else c++;
printf("%d\n",c);
return 0;
}
老师报的答案是2,但是我觉得是3。我认为
if (a<b)
if (b<0)
c = 0;
else c++;
等价于
if (a<b)
{
if (b<0)
c = 0;
}
else c++;
所以我觉得是3,不是说if 后面如果不加“{}”的话只进行一句的吗,那么下面的 else c++;是和第一个if配对的才对吧。求C语言前辈解答。 展开
3个回答
展开全部
int main(void)
{
int a=2,b=-1,c=2;
if (a<b) //第1个if
if (b<0) //第2个if
c = 0;
else
c++;
printf("%d\n",c); //输出结果为: 2
return 0;
}
/**分析如下:
你的理解是不对的,你可能还没有弄明白else与if的匹配规则:else总是与其最近的没有被else匹配的if相匹配,有点绕,以你的程序为例分析:
else的上面有两个if,与其最近的是第2个if,这个if还没有else与其匹配,那么else就与该if匹配,如果我们把上面的语句修改如下:
if (a<b) //第1个if
if (b<0) //第2个if
c = 0;
else c=1; //这里增加了一个else语句
else
c++;
如果改成了上面这样的话,由于第2个if已经有else与其匹配了,那里else c++;这条语句就是与第1个if匹配了。
*/
希望对你理解if...else语句有所帮助吧。
2017-11-09
展开全部
#includeintmax(inta,intb,intc);intmin(inta,intb,intc);voidmain(){intx,y,z;printf("请输入三个数:");scanf("%d%d%d",&x,&y,&z);printf("三个数选出最大数是%d\n",max(x,y,z));printf("三个数选出最小数是%d\n",min(x,y,z
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只要遇到一个return就跳出整个函数了。
追问
和return好像没什么关系把,我问的是输出结果。注意只有一条主函数哦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询