Урок 4.8. Операция запятая

4.8. Операция запятая

Операция запятая (,) позволяет объединить несколько выражений в одно выражение и, таким образом, в Си вводится понятие выражение с запятой, имеющее общий вид записи:

<выражение>, <выражение>, <выражение>, . . .

Пара выражений, разделенных запятой, вычисляется слева направо. Тип и значение результата выражения с запятой есть тип и значение самого правого выражения. Например: k=a+b,d=m+n,5.2+7 это выражение с запятой. Выражение вычисляется слева направо. Его значением является 12.2 типа double. В процессе вычисления этого выражения переменным k и d будут присвоены соответствующие значения.

Для выражения d=(k=5+2,5+3) значение переменной d будет 8, т.к. переменной d присваивается значение выражения с запятой, которое в свою очередь равно значению самого правого выражения-операнда. Запятая в Си используется в двух контекстах: как разделитель списка объектов, например, в операторе описания данных, и как операция, определяющая последовательное вычисление выражений. Поэтому допустимо, например, такое описание с инициализацией: int a,b,c=(1,2,5),d; где переменная c инициализируется константным выражением с запятой 1,2,5 и принимает значение 5. Контекст знака запятая (операция или разделитель) компилятор "чувствует" по скобкам. Внутри скобок – это операция запятая, вне скобок – разделитель.

Забегая вперед, отметим, что аналогичная ситуация может возникнуть в списке фактических аргументов при обращении к функции. Обращение к функции, содержащее три аргумента, причем второй имеет значение 5, может выглядеть так: f(a,(t=3,t+2),c).

Чаще всего операция запятая используется в заголовках циклов, в местах, где синтаксис разрешает записать только одно выражение, а надо записать несколько. Тогда выражения объединяются в одно при помощи операции запятая. Например, когда нужно проинициализировать перед началом цикла или увеличить в конце цикла несколько переменных:

for (i=1, j=2; i<n; j++,i++)

 

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов