C ++ инициализация массива не работает

Я пытаюсь инициализировать массив bools следующим образом:

bool FcpNumberIsOk[MAX_FCPS]={true};

но когда я отлаживаю его, я вижу только первый элемент массива инициализированным, остальные ложными. Как это может быть так? Я использую Qt в Ubuntu 10, и инициализация выполняется в локальном массиве внутри метода.

Хорошо, спасибо за ваши ответы.

8
задан yan bellavance 31 August 2010 в 16:08
поделиться

2 ответа

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

Это не так. Любые неупомянутые элементы инициализируются по умолчанию, что для bool означает false.

Чтобы установить для всех элементов значение true, попробуйте что-то вроде std::fill_n:

std::fill_n(FcpNumberIsOk, MAX_FCPS, true);
10
ответ дан 5 December 2019 в 08:50
поделиться

Используя этот синтаксис, вы инициализируете только первый элемент ( с вашим значением и другими получают значение по умолчанию-один [false]), но не другие. Вы должны использовать либо массив int и memset, либо цикл for для инициализации всех элементов.

-1
ответ дан 5 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: