Сейчас я пишу такой код:
if( phonebookEntry->index < 0 && phonebookEntry->telNo && !phonebookEntry->name ){
//только телефон
}else if( phonebookEntry->index < 0 && phonebookEntry->telNo && phonebookEntry->name ){
//телефон и имя
}else if( phonebookEntry->index >= 0 && !phonebookEntry->telNo && !phonebookEntry->name ){
//только индекс
}else if( phonebookEntry->index >= 0 && phonebookEntry->telNo && !phonebookEntry->name ){
//индекс и телефон
}else if( phonebookEntry->index >= 0 && phonebookEntry->telNo && phonebookEntry->name ){
//индекс, телефон и имя
}else{
//недопустимое сочетание
}
И я заметил, что в каждом условном операторе сразу проверяется случая и подумал, а что если поступить вот так:
unsigned int condition = 0;
if( phonebookEntry->index >= 0 ) condition |= 1;
if( phonebookEntry->telNo ) condition |= 1 << 1;
if( phonebookEntry->name ) condition |= 1 << 2;
И дальше переменную condition запихнуть в switch или вообще использовать в качестве индекса в массиве указателей? Мой случай ещё пограничный, но если добавить ещё один параметр, то вариантов уже будет 16! Короче, степень двойки. Я один такой упоротый или такое где-нибудь применяется?









