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