Почему этот код создает разные o/p в C и C++?
int i = sizeof('a');
В C тип символьной константы, такой как 'a'
, фактически является int
, с размером 4 (или некоторым другим значением, зависящим от реализации). В C++ тип char
, с размером 1. Это одна из многих небольших различий между двумя языками.
Символьные литералы в C являются int
s, тогда как в C++ они являются char
s. В любом случае sizeof(char)
всегда по определению.
Это связано с тем, что C и C++ определяют символьные литералы по-разному. В C символьные литералы рассматриваются как int
а в C++ они рассматриваются как char
.