Логика за sizeof () для символьных констант и имен функций [дубликат]

На этот вопрос уже есть ответ здесь:

Размер символа («а») в C / C ++ 4 ответаПочему символьные литералы типа C вместо символов? 12 ответов

В С следующий код:

#include
int main()
{
   char c='a';
   printf("%d %d",sizeof(c),sizeof('a'));
   return 0;
}

дает результат1 а также4? Пожалуйста, объясните логику?

Кроме того, почемуsizeof(main()) результат в4 ноsizeof(main) результаты в:1

#include

int main()
{

   printf("%d %d\n",sizeof(main), sizeof(main()));
   return 0;
}

И вC ++ Почемуsizeof('a') результат в 1, но sizeof ('средний') результаты в 4?

Ответы на вопрос(2)

Ваш ответ на вопрос