c语言if语句

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:53:39
书上写着,在if语句中,表达式后的语句,只能是一条语句。因此,如果要有多条语句,就得用大括号括起来构成一条复合语句。但是我做了一道题目,没用大括号和用大括号结果是一样的,题目是:
main()
{ int a,b,c,m;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
{if(a>c) m=a;
else m=c;}
else
{if(b>c) m=b;
else m=c;}
printf("%d",m);}
为什么没用大括号和用大括号结果是一样的

main()
{ int a,b,c,m;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
{if(a>c) m=a;
else m=c;}//这的if就是一句,后面的else是这个if的
else
{if(b>c) m=b;
else m=c;} //原理同上
printf("%d",m);}

或者你这样想,if里面不执行if,那么就是执行else,那么不就是相当于是只有一句了嘛~

就只有一点,你看看书是这么说的吧,else跟最近的if嵌套,是不是,所以你用不用都是一样的,你仔细看看就知道了,
这个跟这个是一对的
if(a>c) m=a;
else m=c;}
而这个跟这个又是一对
if(b>c) m=b;
else m=c;}
所以一样的,仔细琢磨就好了

if(a>c) m=a;
else m=c;
实际上可以看做是if(a>b) 后的一条语句

因为你括号内也是个if-else语句,else总是于最近的一个if进行配套,算是一个整体,所以你加不加括号结果都是一样的,如果你换成别的语句,就不一定有这种效果

if……else可以看成一个语句。else是与他最近的if配对,所以在这里要与不要是一样的

因为ELSE是跟最近的一个IF匹配的,循环嵌套跟用大括号就一样了