Насколько я знаю, единственная разница между типами переменных, такими как char, int и т.д., - это объем памяти, который они занимают. Я предполагаю, что они не играют никакой роли в регулировании того, что представляет собой переменная, которую они держат. Если это правда, в здесь, я видел следующее для strcmp:
Функция strcmp сравнивает строку s1 с s2, возвращая значение, которое имеет тот же знак, что и разница между первым различной пары символов (интерпретируемых как неподписанные char объекты, затем продвигается до int).
Я хочу спросить, почему результат продвигается до int? Поскольку char сравниваются, их различие во всех случаях соответствует char. Так не продвигает ли результат int просто добавляя связку 0 в конце результата? Итак, почему это сделано?