Преобразование типа данных делает значение допустимого символа тем же самым как Конец файла (EOF)
Символьное значение, поглощенное в 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