Re: Dlaczego bajt ma akurat 8 bitow ???????

Autor: Radoslaw Sokol (rsokol_at_magsoft.com.pl)
Data: Thu 20 Mar 2003 - 10:20:27 MET


Hi,

Marcin Lewandowski wrote:
>
> Zmienne typu char w języku C zajmuje 4 bajty (tyle co int). Ktoś jednak
> pomyślał zawczasu.

charsize.c:
int main()
{ printf("%i %i %i\n", sizeof(char), sizeof(short), sizeof(long)); return 0; }

C:\> gcc charsize.c -o charsize.exe -s
C:\> charsize
1 2 4
C:\>

Dalej jesteś pewien, że zajmuje cztery bajty? :)

To prawda, że wiele funkcji libc zwraca kody znaków jako int,
ale to wcale nie znaczy, że typ char jest równoważny typowi
int. Zresztą w byle FAQ dotyczącym C jest napisane, że typ char
odpowiada jednemu bajtowi pamięci (co innego wchar_t, który
w zależności od implementacji zajmuje 2 lub 4 bajty).

Cytat:

> C++ guarantees a char is exactly one byte, short is at least
> 2 bytes, int is at least 2 bytes, and long is at least 4 bytes.
> It also guarantees the unsigned version of each of these is
> the same size as the original, for example, sizeof(unsigned short)
> == sizeof(short).

To akurat dotyczy C++, ale ta sama zasada jest i w C jak widać.

-- 
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół  |  mailto:rsokol_at_magsoft.com.pl          |
|                 |  http://www.grush.one.pl/              |
\................... ftp://ftp.grush.one.pl/ ............../


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 09:41:53 MET DST