单行声明

时间:2018-05-13 09:46:20

标签: c ansi-c

#include<stdio.h>
#include<stdlib.h>

int main()
{   
    int i,max,max2;     

    int arr[10];
    for(i=0;i<10;i++)   arr[i]=rand()%101;

    for(i=0;i<10;i++)   printf("%d\n",arr[i]);

    max=arr[0]; 
    for(i=0;i<10;i++)
    {
        if(max < arr[i])    max2=max;   max=arr[i];

    }
    printf("Max is : %d\n",max);
    printf("2nd max is : %d",max2);
}

输出: 32 32 54 12 52 56 8 三十 44 94

最大值是:94

第二个最大值是:44

但是,当我改变我的&#39; if&#39;声明

if(max < arr[i])
    {   
        max2=max;
        max=arr[i];
    }

一切正常!

最大值是:94

第二个最大值是:56

我之前在单行语句中使用了多个操作,如

if(xyz) doSomething; break;

但它在这里不起作用,为什么?

1 个答案:

答案 0 :(得分:4)

没有&#34; 单行声明&#34;在C中,因为C不关心新线。它们仅用于帮助读者阅读。

这个

if(max < arr[i])    max2=max;   max=arr[i];

相当于

if(max < arr[i])    
  max2=max;   
max=arr[i];

相当于

if(max < arr[i])    
{
  max2=max;   
}
max=arr[i];