Значение инициализировать агрегат - PullRequest
3 голосов
/ 22 июня 2011

Пробовал стандарт C ++, но не смог понять. Это эквивалентно?

double x[2] = {0.0, 0.0};

и

double x[2] = {};

Как насчет этих?

struct A {
    double x[2];
};

A a = {0.0, 0.0};

и

A a = {};

Спасибо!

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

Стандарт C ++ гласит (8.5.1):

Если в списке меньше инициализаторов, чем элементов в агрегате, то каждый элемент, не инициализированный явно, должен быть инициализирован значением

и инициализация значения double должна установить его в 0.0.

Так что да!В C ++ они эквивалентны.

[ У меня не было времени проверить стандарт C99. ]

3 голосов
/ 22 июня 2011

Да, они есть.

Компилятор заполняет инициализацию нулями, когда недостаточно для заданного размера.

...