1.4.7 Оператор while

1.4.7 Оператор while

Рассмотрим копирование строки, когда заданы указатель p на ее первый символ и указатель q на целевую строку. По соглашению строка оканчивается символом с целым значением 0.

while (p != 0) (* *q = *p; // скопировать символ q = q+1; p = p+1; *) *q = 0; // завершающий символ 0 скопирован не был

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

Этот пример слишком пространен. Можно использовать операцию ++ для непосредственного указания увеличения, и проверка упростится:

while (*p) *q++ = *p++; *q = 0;

где конструкция *p++ означает: «взять символ, на который указывает p, затем увеличить p.»

Пример можно еще упростить, так как указатель p разыменовывается дважды за каждый цикл. Копирование символа можно делать тогда же, когда производится проверка условия:

while (*q++ = *p++) ;

Здесь берется символ, на который указывает p, p увеличивается, этот символ копируется туда, куда указывает q, и q увеличивается. Если символ ненулевой, цикл повторяется. Поскольку вся работа выполняется в условии, не требуется ни оного оператора. Чтобы указать на это, используется пустой оператор. С++ (как и C) одновременно любят и ненавидят за возможность такого чрезвычайно краткого ориентированного на выразительность программирования*.

– * в оригинале expression-oriented (expression – выразительность и выражение). (прим. перев.)

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1.4.7 Оператор while

Из книги C++ автора Хилл Мюррей

1.4.7 Оператор while Рассмотрим копирование строки, когда заданы указатель p на ее первый символ и указатель q на целевую строку. По соглашению строка оканчивается символом с целым значением 0.while (p != 0) (* *q = *p; // скопировать символ q = q+1; p = p+1; *) *q = 0; // завершающий символ 0 скопирован


1.4.8 Оператор for

Из книги Давайте создадим компилятор! автора Креншоу Джек

1.4.8 Оператор for Рассмотрим копирование десяти элементов одного вектора в другой:for (int i=0; i«10; i++) q[i]=p[i];Это эквивалентно int i = 0; while (i«10) (* q[i] = p[i]; i++; *) но более удобочитаемо, поскольку вся информация, управляющая циклом, локализована. При применении операции ++ к целой


9.6 Оператор For

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

9.6 Оператор For Оператор for имеет видfor (оператор_1 выражение_1 opt; выражение_2 opt) оператор_2Этот оператор эквивалентен следующему:оператор_1 while ( выражение_1 ) (* оператор_2 выражение_2 ; *)за исключением того, что continue в операторе_2 будет выполнять выражение_2 перед выполнением


Оператор DO

Из книги Базы данных: конспект лекций автора Автор неизвестен


5.8.5 Оператор for

Из книги Программирование автора Козлова Ирина Сергеевна

5.8.5 Оператор for Оператор for работает немного не так, как в обычных языках программирования. Вместо того, чтобы организовывать увеличение или уменьшение на единицу значения некоторой переменной при каждом проходе цикла, он при каждом проходе цикла присваивает переменной


1. Оператор Select – базовый оператор языка структурированных запросов

Из книги Справочное руководство по C++ автора Страустрап Бьярн

1. Оператор Select – базовый оператор языка структурированных запросов Центральное место в языке структурированных запросов SQL занимает оператор Select, с помощью которого реализуется самая востребованная операция при работе с базами данных – запросы.Оператор Select


R.6.4.1 Оператор if

Из книги Язык Си - руководство для начинающих автора Прата Стивен

R.6.4.1 Оператор if Выражение должно быть арифметического типа, или типа указателя, или типа класс, для которого существует однозначное преобразование в арифметический тип или тип указателя (§R.12.3).Вычисляется выражение, и если оно имеет отличный от нуля результат,


R.6.5.2 Оператор do

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

R.6.5.2 Оператор do В операторе do вложенный оператор выполняется до тех пор, пока значение выражения не станет равным нулю. Проверка происходит после каждого выполнения оператора.Выражение должно быть арифметического типа, или типа указателя, или типа класс, для которого


R.6.5.3 Оператор for

Из книги C++ для начинающих автора Липпман Стенли

R.6.5.3 Оператор for Оператор for for ( оператор-иниц выражение-1 opt ; выражение-2 opt ) операторэквивалентен конструкцииоператор-иницwhile ( выражение-1 ) { оператор выражение-2 ;}за исключением того факта, что оператор continue в операторе for вызовет выполнение выражение-2 перед тем, как


Оператор if/else

Из книги автора

Оператор if/else В отличие от C и C++, оператор if/else в C# может работать только с булевыми выражениями, а не с произвольными значениями -1, 0. Поэтому в операторах if/else обычно используются операции C#, показанные в табл. 3.6. чтобы получить буквальные булевы значения.Таблица 3.6.


Оператор do while

Из книги автора

Оператор do while Ключевые слова: do, whileОбщие замечания: Оператор do while создает цикл, который повторяется до тех пор, пока выражение, проверяющее условие, не станет ложным, или нулем. Оператор do while является циклом с постусловием; после прохождения цикла принимается решение,


3.3. Оператор &

Из книги автора

3.3. Оператор & При выполнении задания в экранном режиме происходит "захват" терминала на весь этот период. Перевод задания в фоновый режим позволяет освободить терминал для других целей. Чтобы выполнить команду в фоновом режиме, укажите после нее оператор &:команда


15.8.2. Оператор размещения new() и оператор delete()

Из книги автора

15.8.2. Оператор размещения new() и оператор delete() Оператор-член new() может быть перегружен при условии, что все объявления имеют разные списки параметров. Первый параметр должен иметь тип size_t:class Screen {public:void *operator new( size_t );void *operator new( size_t, Screen * );// ...};Остальные параметры