С использует тот факт, что
Хотя стиль программирования языка С использует тот факт, что присваивание является выражением, этого, вероятно, следует избегать как источник скрытых ошибок программирования. Весьма распространенный класс ошибок вызван тем, что присваивание («=») путают с операцией равенства («==»). В следующем операторе:
C |
программист, возможно, хотел просто сравнить i и j, не обратив внимания, что значение i изменяется оператором присваивания. Некоторые С-компиляторы расценивают это как столь плохой стиль программирования, что выдают предупреждающее сообщение.
Полезным свойством языка С является комбинация операции и присваивания:
C |
v = v + е; /* такого оператора. */
Операции с присваиванием особенно важны в случае сложной переменной, включающей индексацию массива и т.д. Комбинированная операция не только экономит время набора на клавиатуре, но и позволяет избежать ошибки, если v написано не одинаково с обеих сторон от знака «=». И все же комбинированные присваивания — всего лишь стилистический прием, так как оптимизирующий компилятор может удалить второе вычисление адреса v.
Можно предотвратить присваивание значения объекту, объявляя его как константу.
const int N = 8; /* Константа в языке С */
N: constant Integer := 8; — Константа в языке Ada
Очевидно, константе должно быть присвоено начальное значение.
Есть различие между константой и статическим значением (static value), которое известно на этапе компиляции:
procedure P(C: Character) is
С1 : constant Character := С;
Ada |
Begin
…
case C is
when C1 => -- Ошибка, не статическое значение
when C2 => -- Правильно, статическое значение