Для одной и той же архитектуры? Что-то я засомневался. Можете подтвердить ссылками на стандарты?
В Си довольно рано было принято, что символьные литералы преобразуются в тип
int. Сам язык был тогда молодой, маленький и такая несистематичность не волновала, да и не прочил никто этому языку столь большого будущего, это был сравнительно небольшой проект по системному программированию, как и его языки-предки BCPL и B. Потом это глубоко вросло в стандартные системные функции, например, в соглашения типа того, что
getchar() может возвращать
EOF==-1, и менять уже было нельзя из-за потери совместимости.
В C++, когда пошли на частичную несовместимость с Си, решились поменять этот момент, поскольку неявных преобразований появилось уже много, и в них надо было наводить порядок. Другой аналогичный момент не поменяли, дробные литералы преобразуются в тип
double, а не
float. Оба соглашения были закреплены в стандартах обоих языков, и менять их уже никто не собирается. Так что для Си теперь навсегда
sizeof('a')==sizeof(int), а для C++
sizeof('a')==sizeof(char).