Я работаю над программой, где мне нужна переменная с тремя состояниями, нетронутыми (неинициализированными), истинными и ложными, поэтому логический выбор будет для этого оптимальным выбором. Но у меня возникают некоторые проблемы при определении того, нет ли bool нетронутым. Я быстро обнаружил, что bool по умолчанию имеет значение 204 или 205, но как конкретно вы можете сказать? Я сделал несколько тестов на этом, и я заметил, что в одной из моих программ он был последовательно 204, а в другом - 205.Неинициализированное логическое значение в C++
Я не уверен, что определяет значение, и или нет, это зависит от программы ИЛИ на основе разработки и используемой операционной системы, но будет ли это значение согласованным во всей программе независимо от операционной системы или устройства? Как и в, она будет работать что-то вроде
//for some reason the default is only 204 or 205 when in an array
bool asdf[1];
const bool UNDEFINED_BOOL = asdf[0];
и чем с использованием значения UNDEFINED_BOOL
через вне программы в качестве сравнения, чтобы увидеть, если BOOL (в массиве) не определено? он работает на моем устройстве, но будет ли он работать на всех устройствах и во всех операционных системах? Является ли это чем-то согласованным на всех C++? и есть ли другой способ узнать, какой будет ценность неопределенного bool, или это то, что вы не можете определить без примера?
EDIT: когда что-то устанавливается истинным или ложным в случае моей программы, будет NEVER быть причиной, чтобы установить его в неинициализированный, так что это не то, что я должен беспокоиться о
Неинициализированная нестатическая и не-потоковая локальная переменная неопределенна, все остальные неинициализированные переменные инициализируются нулем. Не читайте неопределенные переменные, вы просто получите скорбное живот. – Deduplicator
http://thedailywtf.com/articles/What_Is_Truth_0x3f_ – Deduplicator
@Deduplicator, но если вы можете определить согласованное значение неинициализированного логического значения, и у вас есть список из 2,5 миллионов, где вам нужны только три состояния, не лучший ли он выбор использовать булевую, а не более крупную структуру данных? –