Разница в том, что тип '\ 0' - это char, а тип 0 - int.
Тип результата троичного оператора, когда второе и третье выражения имеют разные арифметические типы.получается путем перехода к общему арифметическому типу с использованием тех же правил, которые используются для типов в арифметических выражениях.Когда одно из выражений имеет тип «int», а другое - «char», тип результата - «int».Компилятор жалуется, что переменной типа присваивается значение "int".
Более умный компилятор может отслеживать возможный диапазон значений для результата (который в этом случае совпадает с диапазоном).возможных значений для "char") и сделать вывод, что на самом деле нет никакой вероятности того, что преобразование из "int" в "char" приведет к изменению значения.