Урок 3.2.3. Инициализация переменных
3.2.3. Инициализация переменных
Присваивание переменной начального значения во время компиляции программы называется инициализацией. При описании переменных можно сообщить компилятору о необходимости их инициализации. Если какая либо переменная из списка имен переменных инициализируется, то в списке она должна быть указана в виде:
<имя>=<константа> или <имя>=<константное_выражение> или <имя>=<имя> |
где
<имя> - имя переменной, которой компилятором должно быть установлено начальное значение до выполнения программы; <константа> - определяет конкретное устанавливаемое значение; <константное выражение> – выражение, состоящее только из констант и знаков операций, например, 60+60.
Константные выражения в Си вычисляются во время компиляции, а не во время выполнения программы, поэтому их можно использовать везде, где может стоять константа. Примеры операторов описания с инициализацией переменных:
char backslach = '\\', litera = 'T';
int cows = 32, goats = 14;
float alfa, beta, gamma=1.7e-12;
Обратим внимание на то, что в последнем операторе описания инициализирована только переменная gamma, хотя с первого взгляда может показаться, что все три. Поэтому лучше избегать смешивания инициализируемых и неинициализируемых переменных в одном операторе описания. Кроме того, желательно начальное значение переменной записывать константой соответствующего типа, хотя Си допускает и несовпадение типов. Например, можно допустить такой оператор описания:
int cows = 3.2e+1, goats = 1.4e+1;
который эквивалентен второму оператору вышеприведенной группы, однако при этом компилятор должен затратить дополнительное время на преобразование вещественных констант к целому типу.
Рассмотрим еще несколько примеров инициализации переменных. В комментариях указываются случаи когда форма инициализации допускается только в языке C++.
int i = 5;
int i(5); //только в с++
int a = abs(-3); //используется математическая функция abs
double price = 109.99, discount = 0.16;
double sale_price = price * discount;
double sale_price (price * discount); //только в с++
int val = get_value(); //используется пользовательская функция,
//возвращающая число
Если глобальной статической переменной не задано начальное значение, то она инициализируется нулем. В остальных случаях значение не определено.
Оставить комментарий