Разница между оператором объявления и оператором присваивания в C?

Я новичок в программировании и пытаюсь изучить C. Я читаю книгу, в которой я читал об этих утверждениях, но не мог понять их смысла.


person Coldplay    schedule 22.04.2014    source источник


Ответы (2)


Декларация:

int a;

Назначение:

a = 3;

Объявление и присваивание в одном операторе:

int a = 3;

В объявлении говорится: «Я собираюсь использовать переменную с именем «a» для хранения целочисленного значения». Присваивание говорит: «Поместите значение 3 в переменную a».

(Как указывает @delnan, мой последний пример технически является инициализацией, поскольку вы указываете, с какого значения начинается переменная, а не меняете значение. Инициализация имеет специальный синтаксис, который также поддерживает указание содержимого структура или массив.)

person Russell Zahniser    schedule 22.04.2014
comment
Третий не задание. Это инициализация. - person ; 22.04.2014
comment
Это имеет значение в C, поскольку вы можете делать вещи при инициализации, которые вы не можете делать при присваивании. Например 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 не был инициализирован.

person Aaron St. Clair    schedule 22.04.2014
comment
В основном вы описываете разницу между объявлением переменной и отсутствием ее инициализации по сравнению с объявлением переменной и ее инициализацией. - person ; 22.04.2014