При разборе файла мне нужно определить, обработан ли уже элемент с минимальным и максимальным вхождением 1. Позже при проверке мне нужно определить, не было ли оно вообще обработано.
Я могу сделать это не элегантно с помощью переменной count, которая увеличивается каждый раз, но это громоздко и не элегантно. Возможно, логический флаг. В общем, я бы использовал некоторую форму значения Sentinel, например, NULL для указателя или «» для статически размещенного массива строк. Или memset () ноль для многих элементов.
Проблема в том, что если полный диапазон типов данных является потенциально допустимым входным сигналом, он становится очень запутанным, пытаясь сделать Страж.
Если он подписан и используются только положительные числа, Страж может быть любым отрицательным числом. Если тип данных не имеет знака, но значения, в которых используется бит знака, не используются, можно использовать отрицательное число.
Если для хранения значения можно использовать больший тип данных, то для SV можно использовать добавленный диапазон. Хотя это может повлиять на совместимость типов, усечение, продвижение.
В перечисление я могу добавить запись, создав SV.
Трудно отслеживать все способы отображения для каждого элемента структуры, была ли она инициализирована или нет.
Я почти забыл - простым и универсальным способом было бы сделать каждую переменную динамически размещенной и инициализированной в NULL, даже целые. Хотя это может быть немного странно и, возможно, немного расточительно, это будет очень согласованно и позволит работать логической логике условных операторов, например:
if (age) print («Age - допустимая переменная со значением:% d», * age);
Изменить для уточнения вопроса (без изменений выше):
Я анализирую журналы из другого приложения (нет документации по формату). Записи журнала включают структуры данных / объекты , и в файлах также есть небольшие спонтанно поврежденные записи, потому что другой поток иногда пишет в них без синхронизации доступа .
Структуры имеют члены любого базового типа, например, целое число, строка, подструктура, в разных количествах, например, 1, 0-1, 1 - N. Это становится более сложным, если вы добавите правила для допустимых комбинаций и действительные последовательности.
Для меня может быть проще определить все как массив со связанной переменной счетчика.
Я был мотивирован, чтобы спросить об этом, потому что управление инициализацией и проверка, была ли прочитана переменная, уже начинает подавлять.
Следующий этап - проверка ввода - еще сложнее.