Смысл оператора присваивания
Имейте в виду, что в операторе присваивания слева от знака равенства не может стоять число или выражение. Можно писать с=34, но нельзя писать 34=с. Можно писать z=f-v+990, но нельзя писать f-v+990=z. Правило это принято исходя из механики работы оператора присваивания. Оператор присваивания устроен так, что сначала смотрит или вычисляет, какое значение имеет правая часть, а затем присваивает это значение тому, что стоит в левой
части. То, что справа от знака равенства, присваивается тому, что слева от знака равенства, а не наоборот. Нет смысла присваивать значение числу или выражению.
Обратите внимание еще на один важный момент. Когда школьник видит выражение (например, d+2d), он не обязательно его вычисляет. Он может его преобразовать или, скажем, упростить (получив 3d), даже не поинтересовавшись, чему равно d. Компьютер же, видя выражение, сначала его, может быть, и упростит в уме, но затем обязательно вычислит. А для этого он должен знать численные значения входящих в него величин (в нашем случае это величина d). Таким образом, вычисляя правую часть оператора присваивания (например, y=a+b+1), компьютер должен обязательно заранее знать, чему равны переменные, из которых эта правая часть состоит (в нашем случае это a и b). Ответственность за это знание лежит полностью на программисте. Пусть забывчивый программист записал такой фрагмент: … а=10 : y=a+b+1…, нигде в программе не придав b никакого значения. Естественно, при вычислении выражения a+b+1 компьютер не будет знать, чему равно b. В такой ситуации разные языки программирования поступают по-разному. Некоторые «злые» языки просто отказываются вычислять выражение, «коварный» Турбо-Паскаль может подставить вместо b какую-нибудь ерунду (и молчок, между прочим). VB добрый – он подставляет вместо b нуль.
Проверим. Заставим VB в нашем последнем проекте про прямоугольник не выполнять оператор a = 27018. Для этого его можно просто стереть, но удобнее закомментировать: поставить перед ним кавычку, тогда VB подумает, что это комментарий и выполнять не будет:
‘a = 27018 'Длина прямоугольника
Вот результат:
0
7908
Действительно, все выполнилось так, как если бы a было равно нулю.