Основы программирования на языке C

       

Операция присваивания: =


В языке Си знак равенства не означает "равно". Он означает операцию присваивания некоторого значения. С помощью оператора

yar=2004;

переменной c именем yar присваивается значение 2004, т.е. элемент слева от знака = - это имя переменной, а элемент справа - ее значение. Мы называем символ = операцией присваивания. В этой операции действие выполняется справа налево.

Возможно, различие между именем переменной и ее значением покажется незначительным? В таком случае давайте рассмотрим следующий оператор:

i=i+1;

C математической точки зрения это бессмыслица. Если вы прибавляете единицу к конечному числу, результат не может быть равен исходному числу. Но как оператор присваивания данная строка имеет вполне определенный смысл, который можно выразить, например, такой фразой. Взять значение переменной с именем i, к нему прибавить 1, а затем присвоить новое значение переменной с именем i.

Оператор вида

2004=yar;

на языке Си не имеет смысла, поскольку 2004 - число. Мы не можем присвоить константе какое-то значение; ее значением является она сама. Поэтому, помните, что элемент, стоящий слева от знака =, всегда должен быть именем переменной. Операнд - это то, над чем выполняются операции. Например, можно описать процесс "поедания" картошки как применения операции "поедание" к операнду "картошка".

Операция присваивания в языке Си представляется более интересной, чем в большинстве других языков. Рассмотрим простую программу:

/* таблица результатов по шахматам */ main( ) { int l, m, n; n=m=l=165; printf("l m n\n"); printf("Счет первой партии %4d %8d %8d\n", l, m, n); }

Присваивания выполняются справа налево: сначала переменная l получает значение 165, затем переменная m и наконец n. В языке Си имеется несколько других операций присваивания, которые отличаются от описанной операции. Их мы рассмотрим попозже.

Представим еще один пример простой программы:

/* использование операции присваивания */ main( ) { /* переменные number, ouzo, cost инициализируются конкретными значениями*/ int number=5; float ouzo=13.5; int cost=31000; printf("number ouzo cost\n"); printf("number=%d ouzo=%f cost=%d\n", number, ouzo, cost); }



Содержание раздела