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