c语言中,if()后面有多条语句如果不加“{}”的话将如何执行?

for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(array[j]<array[i])
t=array[j];array[j]=array[i];array[i]=t;
}

for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(array[j]<array[i])
{ t=array[j];array[j]=array[i];array[i]=t;}
}
这两个程序运行结果是不一样的,问题出在哪?
想了一下午终于发现了问题,但是还是不明白具体运行流程是哪里不一样出的问题,谢谢大家了。

for循环不加大括号仅仅执行紧跟的语句。
举个例子:
if(i=1;i<=10;i++)
printf("光光大神好厉害\n");
printf("是啊!");
这样输出的就是十行"光光大神好厉害"和一行"是啊!"。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-14
if(array[j]<array[i])
t=array[j];array[j]=array[i];array[i]=t;
等价于
if(array[j]<array[i])
t=array[j];//只是它在循环内
array[j]=array[i];
array[i]=t;本回答被提问者采纳
第2个回答  2015-10-21
只执行第一句
相似回答