Я реализую strcmp(char *s, char *t)
, который возвращает <0, если <code>s<t, 0, если s==t
, и> 0, если s>t
, сравнивая значение кулака, которое отличается между двумя строками.
реализация с разделением постфиксного приращения и операторов реляционного равенства работает:
for (; *s==*t; s++, t++)
if (*s=='\0')
return 0;
return *s - *t;
однако группировка инкрементов постфикса и операторов реляционного равенства не работает (например, так):
while (*s++ == *t++)
if (*s=='\0')
return 0;
return *s - *t;
Последний всегда возвращает 0. Я думал, что это может быть потому, что мы слишком быстро увеличиваем указатели, но даже с разницей в две строки, встречающиеся с индексом 5 из 10, все равно дает тот же результат.
Пример input: strcomp("hello world", "hello xorld");
возвращаемое значение: 0
Я догадываюсь, что это из-за приоритета оператора, но я не уверен, и если это так, я не могу точно определить, почему.
Спасибо за ваше время!