ПРОГРАММА
Программа состоит из ОПЕРАТОРОВ, то есть действий. Операторы выполняются последовательно в том порядке, в котором они записаны.
/* ОБЪЯВЛЯЕМ ДВЕ ПЕРЕМЕННЫЕ */ int x, y; /* 0 */
/* Это еще не операторы, хотя при этом создаются 2 ящика для целых чисел */
/* А ТЕПЕРЬ - ОПЕРАТОРЫ. */ /* Мы начнем с простых операторов присваивания и арифметики */
x = 3; /* 1 */ y = 4; /* 2 */ x = x + y; /* 3 */ y = y - 1; /* 4 */ x = y; /* 5 */
Значения переменных (то, что лежит в ящиках) меняются таким образом:
x y /* 0 */ мусор мусор
/* после 1 */ 3 мусор /* после 2 */ 3 4 /* после 3 */ 7 4 /* после 4 */ 7 3 /* после 5 */ 3 3
Как вы видите, переменные, которые не участвуют в левой части оператора присваивания, этим оператором НЕ МЕНЯЮТСЯ.
Последняя операция x = y; НЕ делает имена x и y синонимами. Такой вещи, как "перевешивание табличек с именами с ящика на ящик" не происходит. Вместо этого, два ящика с именами x и y содержат одинаковые значения, то есть две копии одного и того же числа.
----- ----- / x / / y / --------------- --------------- | 3 *<--|--------<----|-- 3 | --------------- 1) --------------- 2), 3) 4)
1) Из ящика y берется КОПИЯ числа 3 (безымянное значение). 2) Старое содержимое ящика x уничтожается. 3) Число 3 кладется в ящик x. 4) В исходном ящике y попрежнему осталось 3.
Значение целой переменной можно вывести на экран оператором печати:
printf("%d\n", x);
Пока будем рассматривать его как "магический".
Над целыми числами можно производить такие арифметические операции:
x + y сложение x - y вычитание x * y умножение x / y деление нацело (то есть с остатком; результат - целое) x % y вычислить остаток от деления нацело
5 / 2 даст 2 5 % 2 даст 1
В операторах присваивания используются такие сокращения:
ДЛИННАЯ ЗАПИСЬ СМЫСЛ СОКРАЩАЕТСЯ ДО x = x + 1; "увеличить на 1" x++; (или ++x; ) x = x - 1; "уменьшить на 1" x--; (или --x; ) x = x + y; "прибавить y" x += y; x = x * y; "умножить на y" x *= y; x = x / y; "поделить на y" x /= y;
В том числе x++; можно записать как x += 1;