Я новичок в программировании и пытаюсь изучить C. Я читаю книгу, в которой я читал об этих утверждениях, но не мог понять их смысла.
Разница между оператором объявления и оператором присваивания в C?
Ответы (2)
Декларация:
int a;
Назначение:
a = 3;
Объявление и присваивание в одном операторе:
int a = 3;
В объявлении говорится: «Я собираюсь использовать переменную с именем «a
» для хранения целочисленного значения». Присваивание говорит: «Поместите значение 3 в переменную a
».
(Как указывает @delnan, мой последний пример технически является инициализацией, поскольку вы указываете, с какого значения начинается переменная, а не меняете значение. Инициализация имеет специальный синтаксис, который также поддерживает указание содержимого структура или массив.)
int a[2] = {};
работает, а int a[2]; a = {};
нет.
- person ; 22.04.2014
Объявление переменной настраивает ее на использование в более позднем месте кода. Вы можете создавать переменные для хранения чисел, символов, строк (массивов символов) и т. д.
Вы можете объявить переменную, не присваивая ей значения. Но пока переменная не имеет значения, она не очень полезна.
Вы объявляете переменную следующим образом: char myChar;
ПРИМЕЧАНИЕ. Эта переменная не инициализирована.
Как только переменная объявлена, вы можете присвоить ей значение, например: myChar = 'a';
ПРИМЕЧАНИЕ. Присвоение значения myChar
инициализирует переменную.
Чтобы упростить задачу, если вы знаете, какой должна быть переменная при ее объявлении, вы можете просто объявить ее и присвоить ей значение в одном операторе: char myChar = 'a';
ПРИМЕЧАНИЕ. Это объявляет и инициализирует переменную.
Итак, как только вашей переменной myChar было присвоено значение, вы можете использовать его в своем коде в другом месте. Пример:
char myChar = 'a';
char myOtherChar = 'b';
printf("myChar: %c\nmyOtherChar: %c", myChar, myOtherChar);
Это выводит значение myChar и myOtherChar на стандартный вывод (консоль) и выглядит так:
myChar: a
myOtherChar: b
Если бы вы объявили char myChar;
, не присвоив ему значение, а затем попытались вывести myChar
на стандартный вывод, вы получили бы сообщение об ошибке, говорящее о том, что myChar не был инициализирован.