Инициализация и присваивание
Объявить переменную, а потом сохранить в ней значение — это две строки. Можно уместить всё в одну:
int age = 15;Если переменной дают значение при создании, это называется инициализацией. В этом курсе переменные создаются именно так, потому что тогда с самого начала видно, что в переменной лежит.
Позже в переменную можно сохранить другое значение. Это называется присваиванием. Напишите имя, = и новое значение, но без типа данных, потому что переменная уже существует:
int score = 0;
printf("Счёт: %d\n", score);
score = 50;
printf("Счёт: %d\n", score);Выведется:
Счёт: 0
Счёт: 50Программа выполняет инструкции одну за другой, сверху вниз. Когда выполняется первый printf, в score лежит 0. Следующая строка заменяет его на 50, а старое значение пропадает. Поэтому второй printf выводит новое значение.
Частая ошибка — снова написать тип данных, когда присваиваете значение: int score = 50;. Так создалась бы вторая переменная с тем же именем, а C этого не позволяет. Компилятор сообщает redefinition of 'score': вы определяете имя score второй раз.
Другая ошибка — использовать переменную, пока у неё нет значения:
#include <stdio.h>
int main(void) {
int score;
printf("Счёт: %d\n", score);
return 0;
}Компилятор сообщает:
main.c:5:30: error: variable 'score' is uninitialized when used here [-Werror,-Wuninitialized]Uninitialized означает, что у переменной ещё нет значения. Часть в квадратных скобках лишь говорит, какая из проверок компилятора нашла проблему; её можно игнорировать. Под первой строкой компилятор даже показывает, где добавить значение (= 0).
Почему это ошибка? Сам C не говорит, что хранит переменная без значения. На другом компьютере эта программа могла бы вывести 0, или 21845, или каждый раз другое число. Такую ошибку трудно найти, поэтому компилятор на этом сайте её не пропускает. Надёжнее всего давать каждой переменной значение сразу при создании.
Задание
- 1
Запустите программу. Она не компилируется, потому что у
temperatureнет значения. Инициализируйте переменную: дайте ей значение12при создании. Тогда программа выведетТемпература утром: 12. - 2
Днём потеплело. Под
printfприсвойте переменнойtemperatureновое значение18. - 3
Ниже выведите новое значение так же, но вместо
утромнапишитеднём. Программа должна вывести:Температура утром: 12 Температура днём: 18