Tamaño del carácter ('a') en C / C ++

¿Cuál es el tamaño de los caracteres en C y C ++? Hasta donde yo sé, el tamaño de char es de 1 byte en C y C ++.

Cía:

#include <stdio.h>
int main()
{
  printf("Size of char : %d\n",sizeof(char));
  return 0;
}

En C ++:

#include <iostream>
int main()
{
  std::cout<<"Size of char : "<<sizeof(char)<<"\n";
  return 0;
}

Sin sorpresas, ambos dan la salida:Size of char : 1

Ahora sabemos que los personajes se representan como'a','b','c','|', ... Así que acabo de modificar los códigos anteriores a estos:

Cía:

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

Salida:

Size of char : 1
Size of char : 4

En C ++:

#include <iostream>
int main()
{
  char a = 'a';
  std::cout<<"Size of char : "<<sizeof(a)<<"\n";
  std::cout<<"Size of char : "<<sizeof('a')<<"\n";
  return 0;
}

Salida:

Size of char : 1
Size of char : 1

Porqué elsizeof('a') devuelve diferentes valores en C y C ++?

Respuestas a la pregunta(4)

Su respuesta a la pregunta