там что то с символами которые выше 127, если урезается до чара, то эти значения не доступны, необзодим uchar. и учитывая это все, как происзодит сравнение, как знаковые или беззнаковые числа?. там чел вроде хотел свою версию этой функции сделать, вот и зается этими вопросами
Так я же написал, что все символы должны быть представлены как unsigned char, поэтому и сравнение будет только между беззнаковыми числами
должны, но там вроде вырезки из стандарта показывали
Только одну, а вторую забыли показать, где описывается сама функция strchr
может быть и нет, просто тогда определение довольно странное получается, но в целом имеет смысл
там есть хитрый нюанс формулировки
там указанно только про преобразование в char
Всё верно, однако тот подпункт 3 говорит, что мы явно должны преобразовывать все символы к uchar, следовательно и сравнения с просто чаром быть не может. Т.е. если бы было сказано, что только строковые указатели кастуются к uchar *, тогда бы ещё оставались вопросы, а так вроде всё довольно однозначно.
я в конце об этом и подумал, даже написал об этом, но получается что прямой каст в uchar не катит для искомого символа
Да вообще катит, правда если прям по стандарту, то unsigned char uc = (unsigned char)(char)c;
не катит, есть нюанс: каст int в char определяется реализацией, а вот каст char в uchar уже стандартом определён
Обсуждают сегодня