A C nyelv aritmetikai típusai. Struktúrák.

Hasonló dokumentumok
A C nyelv aritmetikai típusai. Struktúrák.

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Programtervezési stratégiák. Top-down tervezés. Top-down tervezés. Bottom-up tervezés. 4.

Típusok és konstansok

Bevezetés a számítástechnikába

Információs Technológia

Dr. Oniga István DIGITÁLIS TECHNIKA 2

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Informatikai Rendszerek Alapjai

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

Programozás I gyakorlat

A C programozási nyelv I. Bevezetés

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

A C programozási nyelv I. Bevezetés

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Programozás 1. Dr. Iványi Péter

Készítette: Nagy Tibor István

Programozás I. gyakorlat

Információelmélet. Informatikai rendszerek alapjai. Horváth Árpád október 29.

Kombinációs hálózatok Számok és kódok

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Programozás II. 2. Dr. Iványi Péter

Programozás I gyakorlat

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programozás I gyakorlat

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Assembly programozás: 2. gyakorlat

Programozás I gyakorlat. 10. Stringek, mutatók

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Kifejezések. Kozsik Tamás. December 11, 2016

Mintavételes szabályozás mikrovezérlő segítségével

Szám- és kódrendszerek

3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}

M veletek és kifejezések

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Vonalkód referencia-útmutató

Segédlet az Informatika alapjai I. című tárgy számrendszerek fejezetéhez

Assembly Utasítások, programok. Iványi Péter

INFO1 Számok és karakterek

Programozás 5. Dr. Iványi Péter

Kifejezések. Kozsik Tamás. December 11, 2016

A C programozási nyelv III. Pointerek és tömbök.

1. Írjunk programot mely beolvas két számot és ellenőrzi hogy mindkét szám zérus-e:

Programozás I gyakorlat

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

A C programozási nyelv III. Pointerek és tömbök.

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Objektumorientált Programozás I.

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

Aritmetikai utasítások I.

Bevezetés a programozásba I.

Programozás 3. Dr. Iványi Péter

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

Algoritmizálás + kódolás C++ nyelven és Pascalban

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Programozott soros szinkron adatátvitel

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

Programozás alapjai C nyelv 1. gyakorlat

Programozás alapjai C nyelv 1. gyakorlat

Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék

Bevezetés a programozásba I.

5. Fejezet : Lebegőpontos számok

3 A C programozási nyelv szintaktikai egységei

Matematikai programok

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Számítógép és programozás 2

4. Fejezet : Az egész számok (integer) ábrázolása

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

É ú É ö ö ű ö ö ö ú ú ú ű ű ú ö ű ö ű ű ü ö ö ü ű ö ü ö ö ö ö ú ü ö ö ö ú ö ö ú ö ö ú ü ú ú ú ű ü ö ö ű ú ű ű ü ö ű ö ö ö ű ú ö ö ü ú ü ö ö ö ü ú ö ű

É Ö Á Í Á Ó Ö ü

ű ú Í Ó Á ú Ű ű Ő Ö Á ú Ű Ü ú ú Á ú ű

ú ú ö ö ü ü ü ü ű ü ü

ú ű ú ú ű ú ű ű ú ű ú ű Á ű ű Á ű ű ú ú ú ú ú ú ű ú ú ú ú ú ú ú ú

Ö Ö ű ű ű Ú Ú ű ű ű Ú ű

ő ő ő ő ú É ü ú ú ű ú ű ő ő ő ő Á Á ü ő É É É É É É Á Ú Á Á ő ő ő ő ő É Á Á Á ő ő ő Á ü ő ő ü

Ö Ö Ú Ó Ö ű Ő Ő ű ű Ü Ő Ó Ő

é ú é é é é é é é é é é é é ú é ö é é é ö Ő é é é ú é é é é é é é é ö é é é ö é Ö é é ö é ö é é é ű é ö ö é ö é é ö ö é é ö ö é ö é Ö é ú é é é é é é

ő ö ő ú ő ö ö ő ó ő ö ü ú ö ö ó ő ö ü ó ó ó ó ő ő ő ó ó ú ő ü ő ö ö ó ü ö ö ő ű ö ö ő ú ú ó ö ő ű ö ó

ó ú ú ü ú ő ó ő ő ó ó ó ö ó ü ő ó ő ö ü ü ó ö ő É ó ö ö ö ó ó ö ü ü ö ü ó ó ő ó ü ó ü ü ö ö É ú ó ó ö ú ö ü ü ó ó ó ü Á ö ö ü ó ö ó ö ö ö ö ó ó ö ó ó

Átírás:

Aritmetikai típusok Struktúrák Typedef A C nyelv aritmetikai típusai. Struktúrák. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. október 3. c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 1 / 43

Aritmetikai típusok Struktúrák Typedef Tartalom 1 A C nyelv aritmetikai típusai Bevezetés Egészek Karakterek Valósak 2 Struktúrák Motiváció Deníció Értékadás 3 Típusnév-hozzárendelés c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 2 / 43

1. fejezet A C nyelv aritmetikai típusai c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 3 / 43

Típusok Bevezetés A típus Értékkészlet M veletek c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 4 / 43

Típusok Bevezetés A típus Értékkészlet M veletek Valódi számítógép véges értékkészlet Nem ábrázolhatunk tetsz legesen nagy számokat c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 4 / 43

Típusok Bevezetés A típus Értékkészlet M veletek Valódi számítógép véges értékkészlet Nem ábrázolhatunk tetsz legesen nagy számokat Nem ábrázolhatunk tetsz legesen pontos számokat π 3,141592654 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 4 / 43

Típusok Bevezetés A típus Értékkészlet M veletek Ábrázolás Valódi számítógép véges értékkészlet Nem ábrázolhatunk tetsz legesen nagy számokat Nem ábrázolhatunk tetsz legesen pontos számokat π 3,141592654 Ismernünk kell az ábrázolható tartományokat, hogy adatainkat c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 4 / 43

Típusok Bevezetés A típus Értékkészlet M veletek Ábrázolás Valódi számítógép véges értékkészlet Nem ábrázolhatunk tetsz legesen nagy számokat Nem ábrázolhatunk tetsz legesen pontos számokat π 3,141592654 Ismernünk kell az ábrázolható tartományokat, hogy adatainkat információveszteség nélkül vagy c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 4 / 43

Típusok Bevezetés A típus Értékkészlet M veletek Ábrázolás Valódi számítógép véges értékkészlet Nem ábrázolhatunk tetsz legesen nagy számokat Nem ábrázolhatunk tetsz legesen pontos számokat π 3,141592654 Ismernünk kell az ábrázolható tartományokat, hogy adatainkat információveszteség nélkül vagy elfogadható információveszteséggel de ne túl pazarlóan tárolhassuk c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 4 / 43

A C nyelv típusai void skalár aritmetikai mutató függvény union összetett tömb struktúra egész: integer, karakter, felsorolás lebeg pontos c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 5 / 43

A C nyelv típusai void skalár aritmetikai mutató függvény union összetett tömb struktúra egész: integer, karakter, felsorolás lebeg pontos Ma ezekr l lesz szó c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 5 / 43

Egészek bináris ábrázolása 8 biten tárolt el jel nélküli egészek bináris ábrázolása dec 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 hex 0 0 0 0 0 0 0 0 0 0x00 1 0 0 0 0 0 0 0 1 0x01 2 0 0 0 0 0 0 1 0 0x02 3 0 0 0 0 0 0 1 1 0x03.... 127 0 1 1 1 1 1 1 1 0x7F 128 1 0 0 0 0 0 0 0 0x80 129 1 0 0 0 0 0 0 1 0x81.... 253 1 1 1 1 1 1 0 1 0xFD 254 1 1 1 1 1 1 1 0 0xFE 255 1 1 1 1 1 1 1 1 0xFF c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 6 / 43

A túlcsordulás (overow) overow 11..11 11..10 255 254 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jel nélküli számok esetén 129 128 10..01 10..00 127 01..11 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 7 / 43

A túlcsordulás (overow) overow 11..11 11..10 255 254 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jel nélküli számok esetén 255+1 = 0 129 128 10..01 10..00 127 01..11 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 7 / 43

A túlcsordulás (overow) overow 11..11 11..10 255 254 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jel nélküli számok esetén 255+1 = 0 255+2 = 1 129 128 10..01 10..00 127 01..11 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 7 / 43

A túlcsordulás (overow) overow 11..11 11..10 255 254 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jel nélküli számok esetén 255+1 = 0 255+2 = 1 2-3 = 255 129 128 10..01 10..00 127 01..11 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 7 / 43

A túlcsordulás (overow) overow 11..11 11..10 255 254 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jel nélküli számok esetén 255+1 = 0 255+2 = 1 2-3 = 255 modulo 256 aritmetika 129 128 10..01 10..00 127 01..11 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 7 / 43

A túlcsordulás (overow) overow 11..11 11..10 255 254 129 128 10..01 10..00 00..00 00..01 0 1 00..10 2 3 00..11 127 01..11 8 biten ábrázolt el jel nélküli számok esetén 255+1 = 0 255+2 = 1 2-3 = 255 modulo 256 aritmetika Mindig csak az eredmény 256-tal vett maradékát látom c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 7 / 43

Egészek kettes komplemens ábrázolása 8 biten tárolt el jeles egészek kettes komplemens ábrázolása dec 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 hex 0 0 0 0 0 0 0 0 0 0x00 1 0 0 0 0 0 0 0 1 0x01 2 0 0 0 0 0 0 1 0 0x02 3 0 0 0 0 0 0 1 1 0x03.... 127 0 1 1 1 1 1 1 1 0x7F 128 1 0 0 0 0 0 0 0 0x80 127 1 0 0 0 0 0 0 1 0x81.... 3 1 1 1 1 1 1 0 1 0xFD 2 1 1 1 1 1 1 1 0 0xFE 1 1 1 1 1 1 1 1 1 0xFF c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 8 / 43

A túlcsordulás (overow) 11..11 11..10 1 2 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jeles számok esetén 127 128 127 126 10..01 01..10 10..00 01..11 overow c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 9 / 43

A túlcsordulás (overow) 11..11 11..10 1 2 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jeles számok esetén 127+1 = -128 127 128 127 126 10..01 01..10 10..00 01..11 overow c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 9 / 43

A túlcsordulás (overow) 11..11 11..10 1 2 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jeles számok esetén 127+1 = -128 127+2 = -127 127 128 127 126 10..01 01..10 10..00 01..11 overow c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 9 / 43

A túlcsordulás (overow) 11..11 11..10 1 2 00..00 00..01 0 1 00..10 2 3 00..11 8 biten ábrázolt el jeles számok esetén 127+1 = -128 127+2 = -127-127-3 = 126 127 128 127 126 10..01 01..10 10..00 01..11 overow c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 9 / 43

A túlcsordulás (overow) 11..11 11..10 1 2 00..00 00..01 0 1 00..10 2 3 00..11 127 128 127 10..01 126 01..10 10..00 01..11 8 biten ábrázolt el jeles számok esetén viszont 127+1 = -128 127+2 = -127-127-3 = 126 overow c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 9 / 43

A túlcsordulás (overow) 11..11 11..10 1 2 00..00 00..01 0 1 00..10 2 3 00..11 127 128 127 10..01 126 01..10 10..00 01..11 8 biten ábrázolt el jeles számok esetén viszont 127+1 = -128 127+2 = -127-127-3 = 126 2-3 = -1 overow c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 9 / 43

Egész típusok C-ben típus bit 1 <limits.h> printf signed char 8 CHAR_MIN CHAR_MAX %hhd 2 unsigned char 8 0 UCHAR_MAX %hhu 2 signed short int 16 SHRT_MIN SHRT_MAX %hd unsigned short int 16 0 USHRT_MAX %hu signed int 32 INT_MIN INT_MAX %d unsinged int 32 0 UINT_MAX %u signed long int 32 LONG_MIN LONG_MAX %ld unsigned long int 32 0 ULONG_MAX %lu signed long long int 2 64 LLONG_MIN LLONG_MAX %lld unsigned long long int 2 64 0 ULLONG_MAX %llu 1 Tipikus értékek, a szabvány csak a minimumot írja el 2 C99 szabvány óta c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 10 / 43

Egészek deklarációja Alapértelmezések A signed el jelmódosító elhagyható 1 int i; /* signed int */ 2 long int l; /* signed long int */ c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 11 / 43

Egészek deklarációja Alapértelmezések A signed el jelmódosító elhagyható 1 int i; /* signed int */ 2 long int l; /* signed long int */ Ha van el jel- vagy hosszmódosító, az int elhagyható 1 unsigned u; /* unsigned int */ 2 short s; /* signed short int */ c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 11 / 43

Egész típusok Példa a táblázat használatához: egy igen sokáig futó program 3 1 # include < limits.h > /* eg é sz hat á rokhoz */ 2 # include < stdio.h > /* printf - hez */ 3 4 int main ( void ) 5 { /* majdnem ö sszes long long int */ 6 long long i; 7 8 for ( i = LLONG_ MIN ; i < LLONG_ MAX ; i = i +1) 9 printf ("% lld \n", i ); 10 11 return 0; 12 } link 3 feltéve, hogy long long int 64 bites, a program másodpercenként millió szám kiírásával 585 000 évig fut c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 12 / 43

Egész számkonstansok Egész számkonstansok megadási módjai 1 int i1 =0, i2 =123, i4 = -33; /* decim á lis */ 2 int o1 =012, o2 =01234567; /* okt á lis */ 3 int h1 =0 x1a, h2 =0 x7fff, h3 =0 xaa1b /* hexadecim á lis */ 4 5 long l1 =0 x1al, l2 = -33 L; /* l vagy L */ 6 7 unsigned u1 =33 u, u2 =45 U; /* u vagy U */ 8 unsigned long ul1 =33 ul, ul2 =123 lu ; /* l és u */ c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 13 / 43

Egész számkonstansok Egész számkonstansok megadási módjai 1 int i1 =0, i2 =123, i4 = -33; /* decim á lis */ 2 int o1 =012, o2 =01234567; /* okt á lis */ 3 int h1 =0 x1a, h2 =0 x7fff, h3 =0 xaa1b /* hexadecim á lis */ 4 5 long l1 =0 x1al, l2 = -33 L; /* l vagy L */ 6 7 unsigned u1 =33 u, u2 =45 U; /* u vagy U */ 8 unsigned long ul1 =33 ul, ul2 =123 lu ; /* l és u */ Ha nincs megadva u vagy l, akkor az els, amibe belefér: 1 int 2 unsigned int hexa és oktális esetén 3 long 4 unsigned long c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 13 / 43

Miért kell ismerni az ábrázolás korlátait? Határozzuk meg a következ értéket! ( ) 15 15! = 12 12! (15 12)! (Hányféleképpen választhatok ki 15 különböz csoki közül 12-t?) c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 14 / 43

Miért kell ismerni az ábrázolás korlátait? Határozzuk meg a következ értéket! ( ) 15 15! = 12 12! (15 12)! (Hányféleképpen választhatok ki 15 különböz csoki közül 12-t?) A számláló értéke 15! = 1 307 674 368 000 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 14 / 43

Miért kell ismerni az ábrázolás korlátait? Határozzuk meg a következ értéket! ( ) 15 15! = 12 12! (15 12)! (Hányféleképpen választhatok ki 15 különböz csoki közül 12-t?) A számláló értéke 15! = 1 307 674 368 000 A nevez értéke 12! 3! = 2 874 009 600 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 14 / 43

Miért kell ismerni az ábrázolás korlátait? Határozzuk meg a következ értéket! ( ) 15 15! = 12 12! (15 12)! (Hányféleképpen választhatok ki 15 különböz csoki közül 12-t?) A számláló értéke 15! = 1 307 674 368 000 A nevez értéke 12! 3! = 2 874 009 600 Egyik sem ábrázolható 32 bites int-tel! c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 14 / 43

Miért kell ismerni az ábrázolás korlátait? Határozzuk meg a következ értéket! ( ) 15 15! = 12 12! (15 12)! (Hányféleképpen választhatok ki 15 különböz csoki közül 12-t?) A számláló értéke 15! = 1 307 674 368 000 A nevez értéke 12! 3! = 2 874 009 600 Egyik sem ábrázolható 32 bites int-tel! A kifejezést egyszer sítve 15 14 13 3 2 1 = 2730 6 = 455 minden részletszámítás gond nélkül elvégezhet már akár 12 biten is c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 14 / 43

Karakterek ábrázolása Az ASCII karaktertáblázat 128 karakter, melyeket a 0x000x7f számokkal indexelhetünk Kód 00 10 20 30 40 50 60 70 +00 NUL DLE 0 @ P ` p +01 SOH DC1! 1 A Q a q +02 STX DC2 " 2 B R b r +03 ETX DC3 # 3 C S c s +04 EOT DC4 $ 4 D T d t +05 ENQ NAK % 5 E U e u +06 ACK SYN & 6 F V f v +07 BEL ETB ' 7 G W g w +08 BS CAN ( 8 H X h x +09 HT EM ) 9 I Y i y +0a LF SUB * : J Z j z +0b VT ESC + ; K [ k { +0c FF FS, < L \ l +0d CR GS - = M ] m } +0e SO RS. > N ^ n ~ +0f SI US /? O _ o DEL c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 15 / 43

Karakterek tárolása, kiírása, beolvasása Karaktereket (az ASCII tábla indexeit) a char típusban tárolunk kiíratás/beolvasás %c formátumkóddal 1 char ch = 0 x61 ; /* hex 61 = dec 97 */ 2 printf ("%d: %c\n", ch, ch ); 3 ch = ch +1; /* é rt é ke hex 62 = 98 lesz */ 4 printf ("%d: %c\n", ch, ch ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 16 / 43

Karakterek tárolása, kiírása, beolvasása Karaktereket (az ASCII tábla indexeit) a char típusban tárolunk kiíratás/beolvasás %c formátumkóddal 1 char ch = 0 x61 ; /* hex 61 = dec 97 */ 2 printf ("%d: %c\n", ch, ch ); 3 ch = ch +1; /* é rt é ke hex 62 = 98 lesz */ 4 printf ("%d: %c\n", ch, ch ); 97: a 98: b A program kimenete c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 16 / 43

Karakterek tárolása, kiírása, beolvasása Karaktereket (az ASCII tábla indexeit) a char típusban tárolunk kiíratás/beolvasás %c formátumkóddal 1 char ch = 0 x61 ; /* hex 61 = dec 97 */ 2 printf ("%d: %c\n", ch, ch ); 3 ch = ch +1; /* é rt é ke hex 62 = 98 lesz */ 4 printf ("%d: %c\n", ch, ch ); 97: a 98: b A program kimenete Ezek szerint karakterek kiírásához meg kell tanulnunk az ASCII-kódokat? c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 16 / 43

Karakterkonstansok Aposztrófok közé írt karakter ekvivalens az ASCII-kóddal 1 char ch = 'a '; /* ch - ba a 0 x61 ASCII -kód ker ül */ 2 printf ("%d: %c\n", ch, ch ); 3 ch = ch +1; 4 printf ("%d: %c\n", ch, ch ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 17 / 43

Karakterkonstansok Aposztrófok közé írt karakter ekvivalens az ASCII-kóddal 1 char ch = 'a '; /* ch - ba a 0 x61 ASCII -kód ker ül */ 2 printf ("%d: %c\n", ch, ch ); 3 ch = ch +1; 4 printf ("%d: %c\n", ch, ch ); 97: a 98: b c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 17 / 43

Karakterkonstansok Aposztrófok közé írt karakter ekvivalens az ASCII-kóddal 1 char ch = 'a '; /* ch - ba a 0 x61 ASCII -kód ker ül */ 2 printf ("%d: %c\n", ch, ch ); 3 ch = ch +1; 4 printf ("%d: %c\n", ch, ch ); 97: a 98: b Vigyázat! '0' 0! 1 char n = '0 '; /* ch - ba a 0 x30 ASCII -kód ker ül!!! */ 2 printf ("%d: %c\n", n, n ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 17 / 43

Karakterkonstansok Aposztrófok közé írt karakter ekvivalens az ASCII-kóddal 1 char ch = 'a '; /* ch - ba a 0 x61 ASCII -kód ker ül */ 2 printf ("%d: %c\n", ch, ch ); 3 ch = ch +1; 4 printf ("%d: %c\n", ch, ch ); 97: a 98: b Vigyázat! '0' 0! 1 char n = '0 '; /* ch - ba a 0 x30 ASCII -kód ker ül!!! */ 2 printf ("%d: %c\n", n, n ); 48: 0 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 17 / 43

Karakterkonstansok Speciális karakterkonstansok amiket egyébként nehéz lenne beírni 0x00 \0 nullkarakter null character (NUL) 0x07 \a hangjelzés bell (BEL) 0x08 \b visszatörlés backspace (BS) 0x09 \t tabulátor tabulator (HT) 0x0a \n soremelés line feed (LF) 0x0b \v függ leges tabulátor vertical tab (VT) 0x0c \f lapdobás form feed (FF) 0x0d \r kocsi vissza carriage return (CR) 0x22 \ idéz jel quotation mark 0x27 \' aposztróf apostrophe 0x5c \\ visszaper backslash c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 18 / 43

Karakter vagy egész szám? C-ben a karakterek egész számokkal ekvivalensek c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 19 / 43

Karakter vagy egész szám? C-ben a karakterek egész számokkal ekvivalensek Csak megjelenítéskor d l el, hogy egy egész értéket számként vagy karakterként (%d vagy %c) ábrázolunk c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 19 / 43

Karakter vagy egész szám? C-ben a karakterek egész számokkal ekvivalensek Csak megjelenítéskor d l el, hogy egy egész értéket számként vagy karakterként (%d vagy %c) ábrázolunk Karaktereken ugyanolyan m veleteket végezhetünk, mint egészeken (összeadás, kivonás stb... ) c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 19 / 43

Karakter vagy egész szám? C-ben a karakterek egész számokkal ekvivalensek Csak megjelenítéskor d l el, hogy egy egész értéket számként vagy karakterként (%d vagy %c) ábrázolunk Karaktereken ugyanolyan m veleteket végezhetünk, mint egészeken (összeadás, kivonás stb... ) De mi értelme lehet karaktereket összeadni-kivonni? c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 19 / 43

M veletek karakterekkel Írjunk programot, mely karaktereket olvas be mindaddig, míg az újsor karakter nem érkezik. Ezután a program írja ki a beolvasott számjegyek összegét. c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 20 / 43

M veletek karakterekkel Írjunk programot, mely karaktereket olvas be mindaddig, míg az újsor karakter nem érkezik. Ezután a program írja ki a beolvasott számjegyek összegét. 1 char c; 2 int sum = 0; 3 do 4 { 5 scanf ("%c", &c ); /* beolvas ás */ 6 if (c >= '0 ' && c <= '9 ') /* ha sz á mjegy */ 7 sum = sum + (c - '0 '); /* ö sszegz és */ 8 } 9 while (c!= '\n '); /* le á ll á si felt é tel */ 10 printf (" Az ö sszeg : %d\n", sum ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 20 / 43

M veletek karakterekkel Írjunk programot, mely karaktereket olvas be mindaddig, míg az újsor karakter nem érkezik. Ezután a program írja ki a beolvasott számjegyek összegét. 1 char c; 2 int sum = 0; 3 do 4 { 5 scanf ("%c", &c ); /* beolvas ás */ 6 if (c >= '0 ' && c <= '9 ') /* ha sz á mjegy */ 7 sum = sum + (c - '0 '); /* ö sszegz és */ 8 } 9 while (c!= '\n '); /* le á ll á si felt é tel */ 10 printf (" Az ö sszeg : %d\n", sum ); Karambolozott a 12:35-ös gyors Az összeg: 11 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 20 / 43

M veletek karakterekkel Írjunk függvényt, mely az angol ábécé kisbet s karaktereit nagybet ssé alakítja, a többi karaktert változatlanul hagyja. c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 21 / 43

M veletek karakterekkel Írjunk függvényt, mely az angol ábécé kisbet s karaktereit nagybet ssé alakítja, a többi karaktert változatlanul hagyja. 1 char toupper ( char c) 2 { 3 if (c >= 'a ' && c <= 'z ') /* ha kisbet */ 4 { 5 return c - 'a ' + 'A '; 6 } 7 return c; 8 } c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 21 / 43

Lebeg pontos típusok Normálalak 23,2457 = ( 1) 0 2,3245700 10 +001 0,001822326 = ( 1) 1 1,8223260 10 003 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 22 / 43

Lebeg pontos típusok Normálalak 23,2457 = ( 1) 0 2,3245700 10 +001 0,001822326 = ( 1) 1 1,8223260 10 003 Normálalak ábrázolása Lebeg pontos tört = el jelbit + mantissza + exponens c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 22 / 43

Lebeg pontos típusok Normálalak 23,2457 = ( 1) 0 2,3245700 10 +001 0,001822326 = ( 1) 1 1,8223260 10 003 Normálalak ábrázolása Lebeg pontos tört = el jelbit + mantissza + exponens 1 el jelbit: 0pozitív, 1negatív c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 22 / 43

Lebeg pontos típusok Normálalak 23,2457 = ( 1) 0 2,3245700 10 +001 0,001822326 = ( 1) 1 1,8223260 10 003 Normálalak ábrázolása Lebeg pontos tört = el jelbit + mantissza + exponens 1 el jelbit: 0pozitív, 1negatív 2 mantissza: el jel nélküli egész (a tizedesvessz t elhagyva), normalizálás miatt az els számjegy 1 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 22 / 43

Lebeg pontos típusok Normálalak 23,2457 = ( 1) 0 2,3245700 10 +001 0,001822326 = ( 1) 1 1,8223260 10 003 Normálalak ábrázolása Lebeg pontos tört = el jelbit + mantissza + exponens 1 el jelbit: 0pozitív, 1negatív 2 mantissza: el jel nélküli egész (a tizedesvessz t elhagyva), normalizálás miatt az els számjegy 1 3 exponens (másként karakterisztika): el jeles egész c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 22 / 43

Lebeg pontos típusok Bináris normálalak 5,0 = 1,25 4 = ( 1) 0 1,0100 b 2 010 b 0 0100 010 4 implicit bites ábrázolás c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 23 / 43

Lebeg pontos típusok Bináris normálalak 5,0 = 1,25 4 = ( 1) 0 1,0100 b 2 010 b 0 0100 010 Bináris normálalak ábrázolása Lebeg pontos tört = el jelbit + mantissza + exponens 4 implicit bites ábrázolás c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 23 / 43

Lebeg pontos típusok Bináris normálalak 5,0 = 1,25 4 = ( 1) 0 1,0100 b 2 010 b 0 0100 010 Bináris normálalak ábrázolása Lebeg pontos tört = el jelbit + mantissza + exponens 1 el jelbit: 0pozitív, 1negatív 4 implicit bites ábrázolás c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 23 / 43

Lebeg pontos típusok Bináris normálalak 5,0 = 1,25 4 = ( 1) 0 1,0100 b 2 010 b 0 0100 010 Bináris normálalak ábrázolása Lebeg pontos tört = el jelbit + mantissza + exponens 1 el jelbit: 0pozitív, 1negatív 2 mantissza: el jel nélküli egész (a kettedesvessz t elhagyva), normalizálás miatt az els számjegy = 1, nem is tároljuk 4. 4 implicit bites ábrázolás c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 23 / 43

Lebeg pontos típusok Bináris normálalak 5,0 = 1,25 4 = ( 1) 0 1,0100 b 2 010 b 0 0100 010 Bináris normálalak ábrázolása Lebeg pontos tört = el jelbit + mantissza + exponens 1 el jelbit: 0pozitív, 1negatív 2 mantissza: el jel nélküli egész (a kettedesvessz t elhagyva), normalizálás miatt az els számjegy = 1, nem is tároljuk 4. 3 exponens: el jeles egész 4 implicit bites ábrázolás c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 23 / 43

Lebeg pontos típusok C-ben A C nyelv lebeg pontos típusai tipikus értékek típus bitszám mantissza exponens printf/scanf float 32 bit 23 bit 8 bit %f double 64 bit 52 bit 11 bit %f/%lf long double 128 bit 112 bit 15 bit %Lf c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 24 / 43

Lebeg pontos típusok C-ben A C nyelv lebeg pontos típusai tipikus értékek típus bitszám mantissza exponens printf/scanf float 32 bit 23 bit 8 bit %f double 64 bit 52 bit 11 bit %f/%lf long double 128 bit 112 bit 15 bit %Lf Lebeg pontos számkonstansok (tizedespont) 1 float f1 =12.3 f, f2 =12. F, f3 =.5 f, f4 =1.2 e -3 F ; 2 double d1 =12.3, d2 =12., d3 =.5, d4 =1.2 e -3 ; 3 long double l1 =12.3 l, l2 =12. L, l3 =.5 l, l4 =1.2 e -3 L ; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 24 / 43

Egész típusok ábrázolási pontossága ɛ 0 1 2 3 4 5 6 Abszolút számábrázolási pontosság A maximális ɛ hiba, ha egy tetsz leges valós számot a hozzá legközelebbi ábrázolt értékkel közelítünk c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 25 / 43

Egész típusok ábrázolási pontossága ɛ 0 1 2 3 4 5 6 Abszolút számábrázolási pontosság A maximális ɛ hiba, ha egy tetsz leges valós számot a hozzá legközelebbi ábrázolt értékkel közelítünk Az egész típusok abszolút ábrázolási pontossága 0,5 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 25 / 43

Lebeg pontos típusok ábrázolási pontossága expon. = 2 10 1024 1152 1280 1408 1536 1664 expon. = 2 0 8/8 9/8 ɛ 10/8 11/8 12/8 13/8 mantissza 1,000 b 1,001 b 1,010 b 1,011 b 1,100 b 1,101 b c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 26 / 43

Lebeg pontos típusok ábrázolási pontossága expon. = 2 10 1024 1152 1280 1408 1536 1664 expon. = 2 0 8/8 9/8 ɛ 10/8 11/8 12/8 13/8 mantissza 1,000 b 1,001 b 1,010 b 1,011 b 1,100 b 1,101 b jelen példában A mantissza (abszolút) ábrázolási pontossága 1/16 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 26 / 43

Lebeg pontos típusok ábrázolási pontossága expon. = 2 10 1024 1152 1280 1408 1536 1664 expon. = 2 0 8/8 9/8 ɛ 10/8 11/8 12/8 13/8 mantissza 1,000 b 1,001 b 1,010 b 1,011 b 1,100 b 1,101 b jelen példában A mantissza (abszolút) ábrázolási pontossága 1/16 2 0 exponens mellett az ábrázolási pontosság 1/16 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 26 / 43

Lebeg pontos típusok ábrázolási pontossága expon. = 2 10 1024 1152 1280 1408 1536 1664 expon. = 2 0 8/8 9/8 ɛ 10/8 11/8 12/8 13/8 mantissza 1,000 b 1,001 b 1,010 b 1,011 b 1,100 b 1,101 b jelen példában A mantissza (abszolút) ábrázolási pontossága 1/16 2 0 exponens mellett az ábrázolási pontosság 1/16 2 10 exponens mellett az ábrázolási pontosság 2 10 /16 = 64 c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 26 / 43

Lebeg pontos típusok ábrázolási pontossága expon. = 2 10 1024 1152 1280 1408 1536 1664 expon. = 2 0 8/8 9/8 ɛ 10/8 11/8 12/8 13/8 mantissza 1,000 b 1,001 b 1,010 b 1,011 b 1,100 b 1,101 b jelen példában A mantissza (abszolút) ábrázolási pontossága 1/16 2 0 exponens mellett az ábrázolási pontosság 1/16 2 10 exponens mellett az ábrázolási pontosság 2 10 /16 = 64 Nem beszélhetünk abszolút, csak relatív ábrázolási pontosságról, ami jelen esetben 3 bit. c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 26 / 43

A véges számábrázolás következménye Mivel a lebeg pontos számábrázolás pontatlan, m veletek eredményét nem szabad egyenl ségre összehasonlítani! 22 7 + 3 7 25 7 helyette 22 7 + 3 7 25 7 < ε c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 27 / 43

A véges számábrázolás következménye Mivel a lebeg pontos számábrázolás pontatlan, m veletek eredményét nem szabad egyenl ségre összehasonlítani! helyette 22 7 + 3 7 25 7 22 7 + 3 7 25 7 < ε A nagy számok sokkal pontatlanabbak, mint a kis számok. A nagy számok hibája megeheti a kicsiket: A + a A a c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 27 / 43

A bináris számábrázolás következménye Ami decimálisan véges, binárisan nem biztos, hogy az. pl: 0,1 d = 0,00011 b c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 28 / 43

A bináris számábrázolás következménye Ami decimálisan véges, binárisan nem biztos, hogy az. pl: 1 double d; 0,1 d = 0,00011 b Hányszor fut le az alábbi ciklus? 2 for (d = 0.0; d < 1.0; d = d +0.1) /* 10? 11? */ 3 { 4... 5 } c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 28 / 43

A bináris számábrázolás következménye Ami decimálisan véges, binárisan nem biztos, hogy az. pl: 1 double d; 0,1 d = 0,00011 b Hányszor fut le az alábbi ciklus? 2 for (d = 0.0; d < 1.0; d = d +0.1) /* 10? 11? */ 3 { 4... 5 } Helyesen: 1 double d, eps = 1e -3; /* mekkora eps jó ide? */ 2 for (d = 0.0; d < 1.0 - eps ; d = d +0.1) /* 10 - szer */ 3 { 4... 5 } c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 28 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás 2. fejezet Struktúrák c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 29 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Felhasználói típusok A C nyelv beépített típusai nem, vagy csak körülményesen felelnek meg a bonyolultabb, összetettebb adatok tárolására. Felhasználó (programozó) által bevezetett típusok Felsorolás Struktúra Bitmez k Unió c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 30 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Felhasználói típusok A C nyelv beépített típusai nem, vagy csak körülményesen felelnek meg a bonyolultabb, összetettebb adatok tárolására. Felhasználó (programozó) által bevezetett típusok Felsorolás Struktúra ma err l lesz szó Bitmez k Unió c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 30 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Logikailag összetartozó adatok Dátum eltárolása 1 int ev ; 2 int ho ; 3 int nap ; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 31 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Logikailag összetartozó adatok Dátum eltárolása 1 int ev ; 2 int ho ; 3 int nap ; Hallgatói adatok tárolása 1 char neptun [6]; 2 unsigned int kiszhpont ; 3 unsigned int hianyzasok ; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 31 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Logikailag összetartozó adatok Dátum eltárolása 1 int ev ; 2 int ho ; 3 int nap ; Hallgatói adatok tárolása 1 char neptun [6]; 2 unsigned int kiszhpont ; 3 unsigned int hianyzasok ; Sakkjátszma adatai (világos játékos, sötét játékos, mikor, hol, lépések, eredmény) c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 31 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Logikailag összetartozó adatok Dátum eltárolása 1 int ev ; 2 int ho ; 3 int nap ; Hallgatói adatok tárolása 1 char neptun [6]; 2 unsigned int kiszhpont ; 3 unsigned int hianyzasok ; Sakkjátszma adatai (világos játékos, sötét játékos, mikor, hol, lépések, eredmény) c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 31 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Logikailag összetartozó adatok Dátum eltárolása 1 int ev ; 2 int ho ; 3 int nap ; Hallgatói adatok tárolása 1 char neptun [6]; 2 unsigned int kiszhpont ; 3 unsigned int hianyzasok ; Sakkjátszma adatai (világos játékos, sötét játékos, mikor, hol, lépések, eredmény) Egy lépés adatai (gura, honnan, hová) c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 31 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Logikailag összetartozó adatok Dátum eltárolása 1 int ev ; 2 int ho ; 3 int nap ; Hallgatói adatok tárolása 1 char neptun [6]; 2 unsigned int kiszhpont ; 3 unsigned int hianyzasok ; Sakkjátszma adatai (világos játékos, sötét játékos, mikor, hol, lépések, eredmény) Egy lépés adatai (gura, honnan, hová) c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 31 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Logikailag összetartozó adatok Dátum eltárolása 1 int ev ; 2 int ho ; 3 int nap ; Hallgatói adatok tárolása 1 char neptun [6]; 2 unsigned int kiszhpont ; 3 unsigned int hianyzasok ; Sakkjátszma adatai (világos játékos, sötét játékos, mikor, hol, lépések, eredmény) Egy lépés adatai (gura, honnan, hová) A tábla egy mez jének adatai (oszlop, sor) c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 31 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Összetartozó adatok átadása Írjunk függvényt, amely 2D vektorok skalárszorzatát számítja! 1 double v_ skalarszorzat ( double x1, double y1, 2 double x2, double y2 ) 3 { 4 return x1 * x2 + y1 * y2 ; 5 } Hogyan adjuk át az összetartozó adatokat (x 1, y 1 )? A függvényparaméterek száma túl sok lehet c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 32 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Összetartozó adatok átadása Írjunk függvényt, amely 2D vektorok skalárszorzatát számítja! 1 double v_ skalarszorzat ( double x1, double y1, 2 double x2, double y2 ) 3 { 4 return x1 * x2 + y1 * y2 ; 5 } Hogyan adjuk át az összetartozó adatokat (x 1, y 1 )? A függvényparaméterek száma túl sok lehet Írjunk függvényt, amely két vektor különbségét számítja! 1?????? v_ kulonbseg ( double x1, double y1, 2 double x2, double y2 ) 3 { 4... 5 } Hogyan kapjuk vissza az összetartozó adatokat? c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 32 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Egységbezárás (encapsulation) Struktúra logikailag egy egységet alkotó, akár különböz típusú adatokból álló, összetett adattípus hallgató neptun kis zh pontok hiányzások A C nyelv leghatékonyabb típusa A részadatokat mez knek vagy tagoknak hívjuk Egyetlen értékadással másolható Lehet függvény paramétere Lehet függvény visszatérési értéke c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 33 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák C-ben 1 struct vektor { /* strukt ú ra tí pusdefin í ci ó */ 2 double x; double y; 3 }; 4 5 struct vektor v_ kulonbseg ( struct vektor a, 6 struct vektor b) { 7 struct vektor c; 8 c.x = a.x - b.x; 9 c.y = a.y - b.y; 10 return c; 11 } 12 13 int main ( void ) { 14 struct vector v1, v2, v3 ; 15 v1.x = 1.0; v1.y = 2.0; 16 v2 = v1 ; 17 v3 = v_kulonbseg (v1, v2 ); 18 return 0; 19 } c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 34 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra deníciója struct [<struktúra címke>] opt {<struktúra tag deklarációk>} [<változó azonosítók>] opt ; 1 /* egy dá tumot tá rol ó strukt ú ra tí pus */ 2 struct datum { 3 int ev ; 4 int ho ; 5 int nap ; 6 } d1, d2 ; /* két vá ltoz ó pé ld á ny */ c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 35 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra deníciója struct [<struktúra címke>] opt {<struktúra tag deklarációk>} [<változó azonosítók>] opt ; 1 /* egy dá tumot tá rol ó strukt ú ra tí pus */ 2 struct datum { 3 int ev ; 4 int ho ; 5 int nap ; 6 } d1, d2 ; /* két vá ltoz ó pé ld á ny */ c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 35 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra deníciója struct [<struktúra címke>] opt {<struktúra tag deklarációk>} [<változó azonosítók>] opt ; 1 /* egy dá tumot tá rol ó strukt ú ra tí pus */ 2 struct datum { 3 int ev ; 4 int ho ; 5 int nap ; 6 } d1, d2 ; /* két vá ltoz ó pé ld á ny */ c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 35 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra deníciója struct [<struktúra címke>] opt {<struktúra tag deklarációk>} [<változó azonosítók>] opt ; 1 /* egy dá tumot tá rol ó strukt ú ra tí pus */ 2 struct datum { 3 int ev ; 4 int ho ; 5 int nap ; 6 } d1, d2 ; /* két vá ltoz ó pé ld á ny */ c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 35 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra deníciója struct [<struktúra címke>] opt {<struktúra tag deklarációk>} [<változó azonosítók>] opt ; 1 /* egy dá tumot tá rol ó strukt ú ra tí pus */ 2 struct datum { 3 int ev ; 4 int ho ; 5 int nap ; 6 } d1, d2 ; /* két vá ltoz ó pé ld á ny */ [<struktúra címke>] opt elhagyható olyan esetekben, amikor kés bb nem hivatkozunk rá c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 35 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra deníciója struct [<struktúra címke>] opt {<struktúra tag deklarációk>} [<változó azonosítók>] opt ; 1 /* egy dá tumot tá rol ó strukt ú ra tí pus */ 2 struct datum { 3 int ev ; 4 int ho ; 5 int nap ; 6 } d1, d2 ; /* két vá ltoz ó pé ld á ny */ [<struktúra címke>] opt elhagyható olyan esetekben, amikor kés bb nem hivatkozunk rá [<változó azonosítók>] opt struktúra típusú változók deklarációja c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 35 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra típus használata Változók deklarációja struct <struktúra címke> <változó azonosítók>; 1 struct datum d1, d2 ; 2 d1. ev = 2012; 3 d2. ev = d1. ev ; 4 scanf ("%d", & d2. ho ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 36 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra típus használata Változók deklarációja struct <struktúra címke> <változó azonosítók>; 1 struct datum d1, d2 ; 2 d1. ev = 2012; 3 d2. ev = d1. ev ; 4 scanf ("%d", & d2. ho ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 36 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra típus használata Változók deklarációja struct <struktúra címke> <változó azonosítók>; 1 struct datum d1, d2 ; 2 d1. ev = 2012; 3 d2. ev = d1. ev ; 4 scanf ("%d", & d2. ho ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 36 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra típus használata Változók deklarációja struct <struktúra címke> <változó azonosítók>; Struktúra tagok elérése <struktúra azonosító>.<tag azonosító> 1 struct datum d1, d2 ; 2 d1. ev = 2012; 3 d2. ev = d1. ev ; 4 scanf ("%d", & d2. ho ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 36 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra típus használata Változók deklarációja struct <struktúra címke> <változó azonosítók>; Struktúra tagok elérése <struktúra azonosító>.<tag azonosító> 1 struct datum d1, d2 ; 2 d1. ev = 2012; 3 d2. ev = d1. ev ; 4 scanf ("%d", & d2. ho ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 36 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra típus használata Változók deklarációja struct <struktúra címke> <változó azonosítók>; Struktúra tagok elérése <struktúra azonosító>.<tag azonosító> 1 struct datum d1, d2 ; 2 d1. ev = 2012; 3 d2. ev = d1. ev ; 4 scanf ("%d", & d2. ho ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 36 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra típus használata Változók deklarációja struct <struktúra címke> <változó azonosítók>; Struktúra tagok elérése <struktúra azonosító>.<tag azonosító> Struktúrataggal mindaz megtehet, ami különálló változóval 1 struct datum d1, d2 ; 2 d1. ev = 2012; 3 d2. ev = d1. ev ; 4 scanf ("%d", & d2. ho ); c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 36 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Struktúrák szintaxisa Struktúra típus használata Változók deklarációja struct <struktúra címke> <változó azonosítók>; Struktúra tagok elérése <struktúra azonosító>.<tag azonosító> Struktúrataggal mindaz megtehet, ami különálló változóval 1 struct datum d1, d2 ; 2 d1. ev = 2012; 3 d2. ev = d1. ev ; 4 scanf ("%d", & d2. ho ); A tömbökhöz hasonlóan struktúráknál is lehetséges a kezdetiérték-adás: 1 struct datum d3 = {2011, 5, 2}; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 36 / 43

Aritmetikai típusok Struktúrák Typedef Motiváció Deníció Értékadás Értékadás struktúráknál Struktúra típusú változó értéke (összes tagja) frissíthet egyetlen értékadással. 1 struct datum d3 = {2013, 10, 8}, d4 ; 2 d4 = d3 ; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 37 / 43

Aritmetikai típusok Struktúrák Typedef 3. fejezet Típusnév-hozzárendelés c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 38 / 43

Aritmetikai típusok Struktúrák Typedef Deníció C-ben átkeresztelhetjük típusneveinket 1 typedef int cica ; 2 3 cica main () { 4 cica i = 3; 5 int b = 2; 6 return i; 7 } c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 39 / 43

Aritmetikai típusok Struktúrák Typedef Deníció C-ben átkeresztelhetjük típusneveinket 1 typedef int cica ; 2 3 cica main () { 4 cica i = 3; 5 int b = 2; 6 return i; 7 } Típusnév-hozzárendelés A typedef egy álnevet rendel az adott típushoz. Nem hoz létre új típust, az álnévvel bevezetett változók típusa az eredeti típus marad. c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 39 / 43

Aritmetikai típusok Struktúrák Typedef Mire jó? Beszédesebb forráskód, jobban átlátható 1 typedef double voltage ; 2 3 voltage V1 = 1.0; 4 double c = 2.0; 5 voltage V2 = c * V1 ; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 40 / 43

Aritmetikai típusok Struktúrák Typedef Mire jó? Beszédesebb forráskód, jobban átlátható 1 typedef long double voltage ; /* pontosabb kell */ 2 3 voltage V1 = 1.0; 4 double c = 2.0; 5 voltage V2 = c * V1 ; Könnyen karbantartható c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 40 / 43

Aritmetikai típusok Struktúrák Typedef Mire jó? Beszédesebb forráskód, jobban átlátható 1 typedef float voltage ; /* kisebb kell */ 2 3 voltage V1 = 1.0; 4 double c = 2.0; 5 voltage V2 = c * V1 ; Könnyen karbantartható c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 40 / 43

Aritmetikai típusok Struktúrák Typedef Mire jó? Beszédesebb forráskód, jobban átlátható 1 typedef float voltage ; /* kisebb kell */ 2 3 voltage V1 = 1.0; 4 double c = 2.0; 5 voltage V2 = c * V1 ; Könnyen karbantartható Megszabadulhatunk többszavas típusneveinkt l 1 typedef struct vektor vektor ; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 40 / 43

Aritmetikai típusok Struktúrák Typedef Vektoros feladat typedeffel 1 struct vektor { /* új strukt ú ra tí pus */ 2 double x; double y; 3 }; 4 typedef struct vektor vektor ; /* á tnevez és */ 5 6 vektor v_ kulonbseg ( vektor a, vektor b) { 7 vektor c; 8 c.x = a.x - b.x; 9 c.y = a.y - b.y; 10 return c; 11 } 12 13 int main ( void ) { 14 vektor v1, v2, v3 ; 15 v1.x = 1.0; v1.y = 2.0; 16 v2 = v1 ; 17 v3 = v_kulonbseg (v1, v2 ); 18 return 0; 19 } c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 41 / 43

Aritmetikai típusok Struktúrák Typedef Vektoros feladat typedeffel 1 typedef struct vektor { /* egyszerre is megy */ 2 double x; double y; 3 } vektor ; 4 5 6 vektor v_ kulonbseg ( vektor a, vektor b) { 7 vektor c; 8 c.x = a.x - b.x; 9 c.y = a.y - b.y; 10 return c; 11 } 12 13 int main ( void ) { 14 vektor v1, v2, v3 ; 15 v1.x = 1.0; v1.y = 2.0; 16 v2 = v1 ; 17 v3 = v_kulonbseg (v1, v2 ); 18 return 0; 19 } c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 41 / 43

Aritmetikai típusok Struktúrák Typedef Vektoros feladat typedeffel 1 typedef struct { /* ekkor a cí mke lehagyhat ó */ 2 double x; double y; 3 } vektor ; 4 5 6 vektor v_ kulonbseg ( vektor a, vektor b) { 7 vektor c; 8 c.x = a.x - b.x; 9 c.y = a.y - b.y; 10 return c; 11 } 12 13 int main ( void ) { 14 vektor v1, v2, v3 ; 15 v1.x = 1.0; v1.y = 2.0; 16 v2 = v1 ; 17 v3 = v_kulonbseg (v1, v2 ); 18 return 0; 19 } c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 41 / 43

Aritmetikai típusok Struktúrák Typedef Egy összetettebb struktúra 1 typedef struct { 2 double x; 3 double y; 4 } vektor ; y 5 6 typedef struct { 7 vektor kozeppont ; 8 double sugar ; 9 } kor ; x 1 kor k = {{3.0, 2.0}, 1.5}; 2 vektor v = k. kozeppont ; 3 k. kozeppont. y = -2.0; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 42 / 43

Aritmetikai típusok Struktúrák Typedef Egy összetettebb struktúra 1 typedef struct { 2 double x; 3 double y; 4 } vektor ; y 5 6 typedef struct { 7 vektor kozeppont ; 8 double sugar ; 9 } kor ; k x 1 kor k = {{3.0, 2.0}, 1.5}; 2 vektor v = k. kozeppont ; 3 k. kozeppont. y = -2.0; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 42 / 43

Aritmetikai típusok Struktúrák Typedef Egy összetettebb struktúra 1 typedef struct { 2 double x; 3 double y; 4 } vektor ; y 5 6 typedef struct { 7 vektor kozeppont ; 8 double sugar ; 9 } kor ; k v x 1 kor k = {{3.0, 2.0}, 1.5}; 2 vektor v = k. kozeppont ; 3 k. kozeppont. y = -2.0; c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 42 / 43

Aritmetikai típusok Struktúrák Typedef Egy összetettebb struktúra 1 typedef struct { 2 double x; 3 double y; 4 } vektor ; y 5 6 typedef struct { 7 vektor kozeppont ; 8 double sugar ; 9 } kor ; 1 kor k = {{3.0, 2.0}, 1.5}; 2 vektor v = k. kozeppont ; 3 k. kozeppont. y = -2.0; k v x c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 42 / 43

Aritmetikai típusok Struktúrák Typedef Köszönöm a gyelmet. c Farkas B., Fiala P., Vitéz A., Zsóka Z.A C nyelv aritmetikai típusai. Struktúrák. 2016. október 3. 43 / 43