기초질문...ㅠ
사에
2023.04.01
1.{2. int a = 1, b = 2;3. printf(1번 : %d, %d\n, a, b); /* 1, 2 */4. {5. int a = 5;6. printf(2번 : %d, %d\n, a, b); /* 5, 2 */7. a++; b++; 8. {9. printf(3번 : %d, %d\n, a, b); /* 6, 3 */10. }11. }12. printf(4번 : %d, %d\n, a, b); /* 1, 3 */}
여기서 4번 출력값이 왜 1, 3 인지 모르겠어요,
설명 부탁드립니다~^^
-
Loseless
아~! 5번째 줄에 있던 a가 11번째 줄의 블록을 빠져나오면서 소멸되는 것을 몰랐네요,
감사합니다! -
새난
지역변수의 범위는 그 변수가 속해있는 블록 범위입니다.
2번째 줄에서의 a와 5번째 줄에서의 a는 서로 다른 변수입니다. 7번째줄의 a++;는 5번째 줄의 a를 1증가시키고, 6이 되고, b++는 b가 선언된 곳은 2번째 줄 하나이므로 b는 3이 됩니다. 그래서 9번째줄에서 6,3이 출력되고요.
5번째 줄에 있던 a는 11번째 줄의 블록을 빠져나오면서 소멸됩니다. 12번째 줄에서 출력하는 a는 2번째 줄의 a를 출력하므로 1이 출력됩니다.