Объявите несколько целочисленных переменных в C

#c #syntax

Вопрос:

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

Мне так жаль. Но содержание вопроса простое, так что, вероятно, нет никаких трудностей в понимании.

Однажды я не очень хорошо помню, но я увидел код, похожий на приведенный ниже.

 #include <stdio.h>
int main(){
int a,b,c = 1,d,e;
return 0;
}
 

В то время я просто отпустил это. Но теперь, когда я думаю об этом, мне становится любопытно.
Поэтому я проверил значение C, и оно было напечатано 1.

И я изменил 1 на 0 и подтвердил, что значение C равно нулю.

Этот результат был таким же для других чисел.

Я никогда раньше не видел такого кода.

В то же время я знал, что для объявления ряда переменных мне придется выполнить код, приведенный ниже.

int a = 1, b = 2, c = 3; Но это было не то, что я знал.

После нескольких экспериментов я обнаружил, что a,b,c,d,e являются независимыми переменными.

За исключением C, a,b,d,e, содержащих значение мусора.

Интересно, почему это грамматически возможно и почему значения не распределены по порядку слева направо.

Еще раз прошу прощения за использование переводчика.

Комментарии:

1. Дело в том, что вы можете объявить переменные, а затем инициализировать любую переменную, какую захотите. Не существует грамматического правила для инициализации слева направо.

2. ; — это знак препинания, который завершает присвоение или инициализацию при объявлении переменных. Допустимо объявлять несколько переменных до ;.

3. Боже, это была действительно простая вещь. Большое вам спасибо, ребята !!

Ответ №1:

 int a,b,c = 1,d,e;
 

это то же самое, что

 int a;
int b;
int c = 1;
int d;
int e;
 

Ответ №2:

За исключением C, a,b,d,e содержит значение мусора — это связано с тем, что только C одновременно объявлен и инициализирован значением 1. Другие просто объявляются в случайной ячейке памяти, следовательно, имеют значения мусора

Интересно, почему это грамматически возможно — все равно это правильный синтаксис. Смотрите ответ @pmg

В то же время я знал, что для объявления ряда переменных мне придется выполнить код, приведенный ниже. int a = 1, b = 2, c = 3; — Здесь вы фактически объявляете, а также инициализируете их различными значениями. Вы всегда можете объявить любое количество переменных (одного и того же типа данных) в одном операторе.

Комментарии:

1. Спасибо! Я думал, что левая и правая стороны различаются в зависимости от знака равенства!