Однострочные операторы - PullRequest
0 голосов
/ 13 мая 2018
#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 30 44 94

Макс .: 94

2-й максимум: 44

Но когда я изменю свое утверждение "если" на

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

Работает отлично!

Макс .: 94

2-й максимум: 56

Ранее я использовал более одной операции в одной строковой инструкции, например

if(xyz) doSomething; break;

Но здесь это не работает, почему?

1 Ответ

0 голосов
/ 13 мая 2018

В 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];
...