Mała ciekawostka na temat wielkości znaków 'x’, '\001′, '\n’ itp. W języku C często inicjalizuje się zmienne typu char w taki sposób:
char bardzoWaznaZmienna = 'x';
Chyba mało kto zastanawia się na ilu bajtach zapisana jest wartość 'x’ w takim wyrażeniu a jak już się kogoś o to zapytamy to prawdopodobnie dostaniemy odpowiedź, że jeden bajt (przecież kompilator nie wyświetla żadnych ostrzeżeń!).
Ostatnio kolega zadał właśnie takie pytanie i oczywiście poległem a właściwie to bym poległ. Napisałem prosty program, żeby sprawdzić to w praktyce:
#include <stdio.h>
int main()
{
printf("[C ] Size of 'a' = %lu\n", sizeof('a'));
return 0;
}
Po skompilowaniu przy pomocy GCC i uruchomienu programu otrzymałem wynik:
[C ] Size of 'a’ = 4
Następnie napisałem drugi program tym razem C++:
#include <iostream>
using namespace std;
int main()
{
cout << "[C++] Size of 'a' = " << sizeof('a') << endl;
return 0;
}
Tym razem tym razem program skompilowałem G++ i dostałem wynik:
[C++] Size of 'a’ = 1
To taka ciekawostka jak by ktoś zapytał czym się różni C od C++.