GW Basic инициализация переменной по умолчанию
Я работаю с устаревшим кодом и наткнулся на то, что я не смог объяснить после нескольких дней поиска учебников и руководств по GW Basic: переменная (P9%) используется для сравнения в строке 530 (IF P9% <> 0) до того, как код достигнет своего определения в строке 860. Это не сложный кусок кода, всего ~1200 строк, поэтому я уверен, что я не пропустил ни goto, ни gosub, ни что-либо, что могло бы достичь 860 раньше, чем это сравнение.
Мне любопытно, как это повлияло на программу во время ее работы. Большую часть моего опыта я получил с C++, где такого рода вещи не компилировались бы, и если бы это делалось, неназначенная переменная могла бы потенциально содержать что-нибудь подходящее, но я понятия не имею, какой тип назначения по умолчанию дается переменной в Basic.
1 ответ
Прошло много лет с тех пор, как я много писал на gwbasic!
Если я правильно помню, переменной в этом случае присваивается нулевое значение. Gwbasic (и, я думаю, Qbasic) присваивает значение по умолчанию всем переменным при первой ссылке, обычно это ноль или пустая строка для строковой переменной.
Интересно, что при создании массива с помощью оператора DIM все элементы в массиве также инициализируются таким образом.
Даже с этим механизмом обычно лучше инициализировать переменную, просто чтобы понять, что происходит.
Многие программисты эпохи, пишущие для gwbasic, опускали столько, сколько могли, чтобы минимизировать объем памяти, используемый инструкциями программы, чтобы у них было больше для других вещей. Возможно, поэтому он не инициализирован.