Witaj,
I nie wiem czy dobrze rozumuje. np jeśli określam zmienną jako int o dowolnej liczbie z przedziału -2147483648 do 2147483647 to jej rozmiar pamięci wyniesie 4 bajty? Niezależnie od tego jaką wartość wybiorę?
Nie ma zależności jaką liczbę wybierzesz typ pobiera statyczną ilość pamięci dla liczby. Np dla 8bitów(1Bajt)
0 = 00000001
255 = 11111111
W tym przypadku liczba 0 oraz 255 pobierają taką samą ilość pamięci.
To samo pytanie jw. odnośnie zmiennej char. Jeśli wybiorę jakiś symbol/ znak to wartość jaką komputer odczyta będzie się mieścić w przedziale -128 do 127 lub od 0 do 255 a rozmiar jaki potrzebny będzie do jej przechowania wyniesie 1 bajt?
Jeśli chcesz rozszerzyć wartość zmiennej to stosujesz przedrostek unsigned np. unsigned char nazwa. Zakres nazwa to {0, 255}. Możesz również przenieść zakres zmiennej na liczby ujemne poprzez przedrostek signed(on do typów dodawany jest domyślnie) signed char nazwa. Zakres nazwa to {-128, 127}. Oba zakresy są takie same lecz korzystają z innych liczb. Pamiętaj, że wielkość typu zależy od architektury sprzętowej np na x32 int może mieć 4bajty a na x64 np 8bajtów. Aby sprawdzić wielkość bajtową typu zmiennej zastosuj operator sizeof(typ_zmiennej).
Pozdrawiam