В С++, sizeof('a') == sizeof(char) == 1
. Это делает интуитивный смысл, поскольку 'a'
является символьным литералом и sizeof(char) == 1
, как определено стандартом.
В C, однако, sizeof('a') == sizeof(int)
. То есть, похоже, что C-символьные литералы являются целыми числами. Кто-нибудь знает, почему? Я могу найти много упоминаний об этом C quirk, но не объяснил, почему он существует.