C/Składnia: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Wycofanie wersji 50468 utworzonej przez Special:Contributions/83.9.76.74 (User talk:83.9.76.74)
wycofanie zmian
Linia 306:
Istnieje jeden operator przyjmujący trzy argumenty - jest to operator wyrażenia warunkowego: <tt>a ? b : c</tt>. Zwraca on '''b''' gdy '''a''' jest prawdą lub '''c''' w przeciwnym wypadku.
 
== Typy danych ==
{| class="wikitable" cellspace=20
! Typ !! Opis !! Inne nazwy
|-
! align=center colspan=3|Typy danych w/g norm C89 i C90
|-
| '''char'''
|
* Służy głównie do przechowywania znaków
* Od kompilatora zależy czy jest to liczba ze znakiem czy bez; w większości kompilatorów jest liczbą ze znakiem
|
|-
| '''signed char'''
|
* Typ char ze znakiem
|
|-
| '''unsigned char'''
|
* Typ char bez znaku
|
|-
| '''short'''
|
* Występuje, gdy docelowa maszyna wyszczególnia krótki typ danych całkowitych, w przeciwnym wypadku jest tożsamy z typem '''int'''
* Często ma rozmiar jednego słowa maszynowego
| '''short int''', '''signed short''', '''signed short int'''
|-
| '''unsigned short'''
|
* Liczba typu '''short''' bez znaku
* Podobnie, jak '''short''' używana do zredukowania zużycia pamięci przez program
| '''unsigned short int'''
|-
| '''int'''
|
* Liczba całkowita, odpowiadająca podstawowemu rozmiarowi liczby całkowitej w danym komputerze.
* Podstawowy typ dla liczb całkowitych
| '''signed int''', '''signed'''
|-
| '''unsigned'''
|
* Liczba całkowita bez znaku
| '''unsigned int'''
|-
| '''long'''
|
* Długa liczba całkowita
|-
| '''unsigned long'''
|
* Długa liczba całkowita
| '''long int''', '''signed long''', '''signed long int'''
|-
| '''float'''
|
* Podstawowy typ do przechowywania liczb zmiennoprzecinkowych
* W nowszym standardzie zgodny jest z normą [[w:en:IEEE 754|IEEE 754]]
* Nie można stosować go z modyfikatorem '''signed''' ani '''unsigned'''
|
|-
| '''double'''
|
* Liczba zmiennoprzecinkowa podwójnej precyzji
* Podobnie jak float nie łączy się z modyfikatorem '''signed''' ani '''unsigned'''
|
|-
| '''long double'''
|
* Największa możliwa dokładność liczb zmiennoprzecinkowych
* Nie łączy się z modyfikatorem '''signed''' ani '''unsigned'''
|
|-
! colspan=3|Typy danych według normy C99
|-
| '''_Bool'''
|
* Przechowuje wartości 0 lub 1
|
|-
| '''long long'''
|
* Nowy typ, umożliwiający obliczeniach na bardzo dużych liczbach całkowitych bez użycia typu float
| '''long long int''', '''signed long long''', '''signed long long int'''
|-
| '''unsigned long long'''
|
* Długie liczby całkowite bez znaku
| '''unsigned long long int'''
|-
| '''float _Complex'''
|
* Słuzy do przechowywania liczb zespolonych
|
|-
| '''double _Complex'''
|
* Słuzy do przechowywania liczb zespolonych
|
|-
| '''long double _Complex'''
|
* Słuzy do przechowywania liczb zespolonych
|
|-
! colspan=3|Typy danych definiowane przez użytkownika
|-
| '''struct'''
|
* Rozmiar zależy od typów danych, umieszczonych w strukturze plus ewentualne dopełnienie<ref>Patrz - rozdział [[C/Więcej o kompilowaniu|Więcej o kompilowaniu]].</ref>
|
|-
| '''union'''
|
* Rozmiar typu jest taki jak rozmiar największego pola
|
|-
| '''typedef'''
|
* Nowo zdefiniowany typ przyjmuje taki sam rozmiar, jak typ macierzysty
|
|-
| '''enum'''
|
* Zwykle elementy mają taką samą długość, jak typ '''int'''.
| -
|-
|}
 
Zależności rozmiaru typów danych są następujące:
'''== Lolki z was som ;d;d;d; =='''
* sizeof(''cokolwiek'') = sizeof('''signed''' ''cokolwiek'') = sizeof('''unsigned''' ''cokolwiek'');
----
* 1 = sizeof('''char''') &le; sizeof('''short''') &le; sizeof('''int''') &le; sizeof('''long''') &le; sizeof('''long long''');
* sizeof('''float''') &le; sizeof('''double''') &le; sizeof('''long double''');
* sizeof(''cokolwiek'' '''_Complex''') = 2 * sizeof(''cokolwiek'')
* sizeof('''void *''') = sizeof('''char *''') &ge; sizeof(''cokolwiek'' '''*''');
* sizeof(''cokolwiek'' '''*''') = sizeof('''signed''' ''cokolwiek'' '''*''') = sizeof('''unsigned''' ''cokolwiek'' '''*''');
* sizeof(''cokolwiek'' '''*''') = sizeof('''const''' ''cokolwiek'' '''*''').
 
Dodatkowo, jeżeli przez V(typ) oznaczymy liczbę bitów wykorzystywanych w typie to zachodzi:
----
* 8 &le; V('''char''') = V('''signed char''') = V('''unsigned char''');
* 16 &le; V('''short''') = V('''unsigned short''');
* 16 &le; V('''int''') = V('''unsigned int''');
* 32 &le; V('''long''') = V('''unsigned long''');
* 64 &le; V('''long long''') = V('''unsigned long long''');
* V('''char''') &le; V('''short''') &le; V('''int''') &le; V('''long''') &le; V('''long long''').
 
<noinclude>
----
{{Przypisy}}
 
</noinclude>
----
 
d