Когда я инициализирую массив a[][]
:
int a[2][5]={(8,9,7,67,11),(7,8,9,199,89)};
а затем отобразить элементы массива.
Почему я получаю:
11 89 0 0 0
0 0 0 0 0
Что произойдет, если вы используете фигурные скобки вместо первых скобок здесь?
Когда я инициализирую массив a[][]
:
int a[2][5]={(8,9,7,67,11),(7,8,9,199,89)};
а затем отобразить элементы массива.
Почему я получаю:
11 89 0 0 0
0 0 0 0 0
Что произойдет, если вы используете фигурные скобки вместо первых скобок здесь?
(8,9,7,67,11)
- выражение, использующее оператор запятой, который оценивается равным 11. То же самое верно для другого инициализатора. Таким образом, вы только инициализируете первые два элемента явно, тогда все остальные инициализируются на 0. Ваш компилятор должен предупредить об отсутствии уровня фигурных скобок в инициализаторе.
Если вы используете фигурные скобки, вы инициализируете два составных массива a
, как это возможно.
int a[2][5]={(8,9,7,67,11),(7,8,9,199,89)};
эквивалентно (в области блока):
int a[2][5]={11, 89};
,
является оператором запятой C. Он оценивает свои операнды слева направо и дает значение правильного операнда.
Инициализаторы массива массива файлов должны быть постоянными, а выражение ,
никогда не является постоянным выражением, объявление массива недействительно.
Потому что вы не используете фигурные скобки, но скобки. Вы хотите:
int a[2][5] = { { 8,9,7,67,11 }, { 7,8,9,199,89 } };
// ^^^ ^^^^^^ ^^^
В исходном коде вы только что познакомились с запятой, и на самом деле вы написали int a[2][5] = { 11, 89 };
. Это законно, но он инициализирует все недостающие элементы равными нулю.
Это понятие comma operator
и comma separator
Вы должны использовать {}
для инициализации массива
int a[2][5]={(8,9,7,67,11),(7,8,9,199,89)};
здесь (8,9,7,67,11)
эквивалентно 11
из-за comma operator
и (7,8,9,199,89)
эквивалентно 89
для того же, потому что оператор-запятая оценивается как left to right
, а самым правым значением является возвращаемое значение
следовательно, это эквивалентно a[2][5]={11,89}
но (8,9,7,67,11),(7,8,9,199,89)
, но запятая, используемая в () , ()
, равна comma separator