Я пытаюсь инициализировать массив bools следующим образом:
bool FcpNumberIsOk[MAX_FCPS]={true};
но когда я отлаживаю его, я вижу только первый элемент массива инициализированным, остальные ложными. Как это может быть так? Я использую Qt в Ubuntu 10, и инициализация выполняется в локальном массиве внутри метода.
Хорошо, спасибо за ваши ответы.
Вы неправильно поняли. Похоже, вы думали, что любые неупомянутые элементы будут инициализированы тем же значением, что и последнее явно инициализированное значение. Последнее значение, которое вы упомянули, было true
, поэтому все последующие элементы также будут инициализированы true
. Когда-то у меня было такое же убеждение, но я быстро убедился в обратном.
Это не так. Любые неупомянутые элементы инициализируются по умолчанию, что для bool
означает false
.
Чтобы установить для всех элементов значение true
, попробуйте что-то вроде std::fill_n
:
std::fill_n(FcpNumberIsOk, MAX_FCPS, true);
Используя этот синтаксис, вы инициализируете только первый элемент ( с вашим значением и другими получают значение по умолчанию-один [false]), но не другие. Вы должны использовать либо массив int и memset, либо цикл for для инициализации всех элементов.