Знам, че всеки литерал в C и C++ получава специфична информация за типа. Написах тази малка програма на C и я компилирах в Visual Studio 2012. Изходният файл се нарича „main.c“.
#include <stdio.h>
int main()
{
printf("sizeof(char) = %d\n",sizeof(char));
printf("sizeof('i') = %d",sizeof('i'));
getchar();
return 0;
}
Изход:
sizeof(char) = 1
sizeof('i') = 4
Чудех се, че размерът на символа не е 1 байт. Преименувах изходния файл на 'main.cpp' и сега sizeof('a') върна 1, както се очакваше преди. Така че трябва да има специфична езикова разлика. Защо размерът на char в C е 4 байта, а не 1?