关于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语言前辈解答。
展开
 我来答
My_Persistence
2017-11-09 · TA获得超过3467个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:433万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
析巧云0jq
2017-11-09 · TA获得超过224个赞
知道小有建树答主
回答量:148
采纳率:86%
帮助的人:21.7万
展开全部
只要遇到一个return就跳出整个函数了。
追问
和return好像没什么关系把,我问的是输出结果。注意只有一条主函数哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式