“Strlen (s1) - strlen (s2)” nunca es menor que cero

Actualmente estoy escribiendo un programa en C que requiere comparaciones frecuentes de longitudes de cadena, así que escribí la siguiente función auxiliar:

int strlonger(char *s1, char *s2) {
    return strlen(s1) - strlen(s2) > 0;
}

Me he dado cuenta de que la función devuelve true incluso cuandos1 tiene una longitud más corta ques2. ¿Puede alguien explicar este extraño comportamiento?