Преобразование типа данных делает значение допустимого символа тем же самым как Конец файла (EOF)
Этот дефект происходит, когда вы выполняете преобразование типа данных, которое делает значение допустимого символа неотличимым от EOF (Конец файла). Средство поиска ошибки отмечает дефект в одной из следующих ситуаций:
Конец файла: Вы выполняете преобразование типа данных такой как от int к char это преобразует non-EOF символьное значение в EOF.
char ch = (char)getchar()
if((int)ch == EOF)
Широкий Конец Файла: Вы выполняете преобразование типа данных, которое может преобразовать non-WEOF значение широкого символа в WEOF, и затем сравнивать результат с WEOF.
Тип данных char не может содержать значение EOF это указывает на конец файла. Функционирует, такие как getchar имейте возвращаются, вводят int размещать EOF. Если вы преобразуете от int к char, значения UCHAR_MAX (значение допустимого символа) и EOF будьте преобразованы в то же значение-1 и станьте неразличимыми друг от друга. Когда вы сравниваете результат этого преобразования с EOF, сравнение может привести к ложному обнаружению EOF. Это объяснение также применяется к значениям широкого символа и WEOF.
Выполните сравнение с EOF или WEOF перед преобразованием.
| Группа: Программирование |
| Язык: C | C++ |
| Значение по умолчанию: на |
Синтаксис командной строки: CHAR_EOF_CONFUSED |
| Удар: высоко |
| ID CWE: 704 |
Errno not checked | Find defects (-checkers) | Invalid use of standard library integer routine | Misuse of sign-extended character value | Returned value of a sensitive function not checked