Язык программирования C++. Вводный курс


           

в этом примере крайне важен.












if ( minVal > ivec[ i ] )

{

    minVal = ivec[ i ];

    occurs = 1;



}

Вторая инструкция if

выглядит так:











if ( minVal == ivec [ i ] )



    ++occurs;

Заметим, что порядок следования инструкций в этом примере крайне важен. Если мы будем сравнивать minVal

именно в такой последовательности, наша функция всегда будет ошибаться на 1:











if ( minVal > ivec[ i ] ) {

    minVal = ivec[ i ];

    occurs = 1;

}

//         если minVal только что получила новое значение,

//         то occurs будет на единицу больше, чем нужно

if         ( minVal == ivec[ i ] )    



    ++occurs;

Выполнение второго сравнения не обязательно: один и тот же элемент не может одновременно быть и меньше и равен minVal. Поэтому появляется необходимость выбора одного из двух блоков в зависимости от условия, что реализуется инструкцией if-else, второй формой if-инструкции. Ее синтаксис выглядит таким образом:











if ( условие )

    инструкция1

else



    инструкция2

инструкция1

выполняется, если условие истинно, иначе переходим к инструкция2. Например:











if ( minVal == ivec[ i ] )

    ++occurs;

else

if ( minVal > ivec[ i ] ) {

    minVal = ivec[ i ];

    occurs = 1;



}

Здесь инструкция2

сама является if-инструкцией. Если minVal

меньше ivec[i], никаких действий не производится.

В следующем примере выполняется одна из трех инструкций:











if ( minVal < ivec[ i ] )

    {} // пустая инструкция

else

if ( minVal > ivec[ i ] ) {

    minVal = ivec[ i ];

    occurs = 1;

}

else // minVal == ivec[ i ]



    ++occurs;

Составные инструкции if-else

могут служить источником неоднозначного толкования, если частей else

больше, чем частей if. К какому из if

отнести данную часть else? (Эту проблему иногда называют проблемой висячего else). Например:











if ( minVal <= ivec[ i ] )

    if ( minVal == ivec[ i ] )

        ++occurs;

else {

    minVal = ivec[ i ];

    occurs = 1;



}

Судя по отступам, программист предполагает, что else относится к самому первому, внешнему if. Однако в С++ неоднозначность висячих else разрешается соотнесением их с последним встретившимся if. Таким образом, в действительности предыдущий фрагмент означает следующее:


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий