Feladat 1: Próbáljuk ki a következő kódot és magyarázzuk meg a hiba okát.
1 2 3 4 5 6 7 8 9 10 |
#include<stdio.h> int main() { { int a = 10, b = 20; } { printf ( "a = %d, b = %d\n" , a, b); } } |
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?
1 2 3 4 5 6 7 8 9 10 |
#include <stdio.h> int main() { int n = 1; { int n = 2; printf ( "%d\n" , n); } printf ( "%d\n" , n); } |
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 értket fog tartalmazni.