Logika za sizeof () dla stałych znaków i nazw funkcji [duplikat]

To pytanie ma już tutaj odpowiedź:

Rozmiar znaku („a”) w C / C ++ 4 odpowiedziDlaczego literały znaków C są intami zamiast znaków? 12 odpowiedzi

WC następujący kod:

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

daje wynik1 i4? Proszę wyjaśnić logikę?

Również dlaczegosizeof(main()) skutkować w4 alesizeof(main) prowadzi do1:

#include<stdio.h>

int main()
{

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

I wC ++ dlaczegosizeof('a') wynik 1, ale sizeof („av”) daje 4?

questionAnswers(2)

yourAnswerToTheQuestion