С++ для начинающих




Операции присваивания - часть 3


int main()

{

    // правильно: определение и инициализация

    int ival = 0, jval = 0;

    // ...

}

В практике программирования часты случаи, когда к объекту применяется некоторая операция, а результат этой операции присваивается тому же объекту. Например:

int arraySum( int ia[], int sz )

{

    int sum = 0;

    for ( int i = 0; i < sz; ++i )

        sum = sum + ia[ i ];

    return sum;

}

Для более компактной записи С и С++ предоставляют составные операции присваивания. С использованием такого оператора данный пример можно переписать следующим образом:

int arraySum( int ia[], int sz )

{

    int sum = 0;

    for ( int i =0; i < sz; ++i )

        // эквивалентно: sum = sum + ia[ i ];

        sum += ia[ i ];

    return sum;

}

Общий синтаксис составного оператора присваивания таков:

a op= b;

где op= является одним из десяти операторов:

+=     -=     *=     /=     %=

<<=    >>=    &=     ^=     |=

Запись a op= b в точности эквивалентна записи a = a op b.

Упражнение 4.6

Найдите ошибку в данном примере. Исправьте запись.

int main() {

    float fval;

    int ival;

    int *pi;

    fval = ival = pi = 0;

}

Упражнение 4.7

Следующие выражения синтаксически правильны, однако скорее всего работают не так, как предполагал программист. Почему? Как их изменить?

(a) if ( ptr = retrieve_pointer() != 0 )

(b) if ( ival = 1024 )

(c) ival += ival + 1;




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