Точные значения, возвращаемые из strcmp
в неравных случаях, не определены явно.В вашем конкретном случае любое отрицательное значение считается действительным.Из справочной страницы :
Функции strcmp () и strncmp () возвращают целое число меньше, равно или больше нуля, если s1 (или первые n байтов)его), соответственно, меньше или равно s2.
Таким образом, единственной гарантией является то, что если первый аргумент "меньше" второго, то результатотрицательно, и если первое «больше» второго, то результат положительный.Разные реализации могут возвращать разные значения для одних и тех же строк.
Например, если я компилирую и запускаю ваш код на моей машине с оптимизацией, установленной на -O0
, я получаю -115 от strcmp
.Если я изменяю оптимизацию на -O1
, она возвращает -1 вместо.Таким образом, результат может не только меняться с одного компьютера на другой, но даже может отличаться на одном компьютере с различными настройками компилятора.