Sizeof(’x’) w C i C++

przez | 29 listopada 2019

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++.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *