Обратите внимание, что я выполняю это странное назначение не потому, что мне не ясен синтаксис или я новичок в c.
Я просто пытался выяснить, что произойдет, если int присвоить массив:
int a = {1, 2, 3};
К этому я получил следующее предупреждение:
warning: excess elements in scalar initializer
int a = {1, 2, 3};
^
warning: excess elements in scalar initializer
int a = {1, 2, 3};
^
, и когда я печатаю содержимое a, я получаю 1
.
Но когда я делаю это:
int a;
a = {1, 2, 3};
Я получаю сообщение об ошибке:
error: expected expression before ‘{’ token
a = {1, 2, 3};
^
Хотя я знаю, что массивы не предназначены для назначения int
переменным, приведенные выше результаты приводят меня к вопросу:
- разница между
int x; x = ...
и int x = ...
и
- что именно вызывает предупреждение или сообщение об ошибке?