tanszek:oktatas:szamitastechnika:blokkok_-_ciklusok
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:szamitastechnika:blokkok_-_ciklusok [2025/10/28 19:34] – knehez | tanszek:oktatas:szamitastechnika:blokkok_-_ciklusok [2025/10/29 07:45] (current) – knehez | ||
|---|---|---|---|
| Line 15: | Line 15: | ||
| Megoldás: az //a// és //b// változók nem léteznek a második blokkban. | Megoldás: az //a// és //b// változók nem léteznek a második blokkban. | ||
| + | |||
| + | ---- | ||
| **Feladat 2:** Figyeljük meg, hogyan kezeli a **C** nyelv a blokkokat. Két kapcsos zárójel közötti utasításokat 1 blokknak kell tekinteni. Mi lesz a kimenete a következő kódnak és miért? | **Feladat 2:** Figyeljük meg, hogyan kezeli a **C** nyelv a blokkokat. Két kapcsos zárójel közötti utasításokat 1 blokknak kell tekinteni. Mi lesz a kimenete a következő kódnak és miért? | ||
| Line 32: | Line 34: | ||
| Megoldás: hiába azonosak a változónevek //n//, a C nyelv a blokkon belül egyedileg kezeli, így a külső //n// más értéket fog tartalmazni. | Megoldás: hiába azonosak a változónevek //n//, a C nyelv a blokkon belül egyedileg kezeli, így a külső //n// más értéket fog tartalmazni. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Feladat 3:** Miért nem növekszik az x minden ciklusban? | ||
| + | |||
| + | <sxh c> | ||
| + | #include < | ||
| + | int main() { | ||
| + | for (int i = 0; i < 3; i++) { | ||
| + | int x = 0; | ||
| + | x++; | ||
| + | printf(" | ||
| + | } | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Megoldás: mert a ciklusban int x = 0; mindig újra inicializálja. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Feladat 4:** Milyen sorrendben írja ki a számokat? | ||
| + | |||
| + | <sxh c> | ||
| + | #include < | ||
| + | int main() { | ||
| + | int x = 1; | ||
| + | { | ||
| + | x = 2; | ||
| + | { | ||
| + | int x = 3; | ||
| + | printf(" | ||
| + | } | ||
| + | printf(" | ||
| + | } | ||
| + | printf(" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Megoldás: 3, 2, 2 | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Feladat 5:** Miért kapunk hibás eredményt? | ||
| + | |||
| + | <sxh c> | ||
| + | #include < | ||
| + | int main() { | ||
| + | int n = 5; | ||
| + | { | ||
| + | int n = n + 1; | ||
| + | printf(" | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Megoldás: undefined behavior (nem definiált viselkedés). A C szabályai szerint az új változó inicializálása előtt még nem létezik, tehát a //n// a jobb oldalon még nem a külső //n//-t, hanem az éppen most definiálás alatt álló (még nem inicializált) //n//-t jelenti | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Feladat 6:** Mi lesz a két kiírt szám és miért? | ||
| + | |||
| + | <sxh c> | ||
| + | #include < | ||
| + | int main() { | ||
| + | int a = 5; | ||
| + | int b = 10; | ||
| + | { | ||
| + | int b = a + 1; | ||
| + | printf(" | ||
| + | } | ||
| + | printf(" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Megoldás: 6, 10 | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Feladat 7:** Miért változik meg az a értéke, pedig a módosítás egy belső blokkban történt? | ||
| + | |||
| + | <sxh c> | ||
| + | #include < | ||
| + | int main() { | ||
| + | int a = 5; | ||
| + | { | ||
| + | int *p = &a; | ||
| + | *p = 10; | ||
| + | } | ||
| + | printf(" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Megoldás: a pointer //p// közvetlenül a memóriába ír. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Feladat 8:** Melyik sor melyik x-re hivatkozik? | ||
| + | |||
| + | <sxh c> | ||
| + | #include < | ||
| + | int x = 100; | ||
| + | |||
| + | int main() { | ||
| + | int x = 10; | ||
| + | { | ||
| + | extern int x; | ||
| + | printf(" | ||
| + | } | ||
| + | printf(" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Megoldás: extern int x; a globális változóra vonatkozik | ||
| + | |||
tanszek/oktatas/szamitastechnika/blokkok_-_ciklusok.1761680077.txt.gz · Last modified: 2025/10/28 19:34 by knehez
