책 내용 질문하기
void
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
110
조회수
50
작성일
2017-06-15
작성자
탈퇴*원
첨부파일
110쪽에 문제 23번 질문입니다 a가 increase를 만났을 때 밑에 void문으로 가고 a++이 되고 결과 출력 후에 다시 올라갈 땐 다시 a가 1이 되는 것 아닌가요? a가 2로 올라가서 다시 내려와서 a++이 되려면 void가 아니라 return아닌가요 ㅠ?... 그리고 b의 증가값이 왜 저장이 안 되는지도 궁금합니다
답변
2017-06-16 09:09:28

안녕하세요.

main() 에서 increase();에 의해 increase() 함수가 호출되면

b가 2로 초기화되고

printf에 의해 %d, %d가 출력될 때 앞의 %d는 ++a가 적용되는데 전치연산자이므로 a의 값을 먼저 1증가시킨 후 %d로 출력합니다.

그래서 출력은 2가 됩니다. b도 ++b임으로 3이 출력됩니다.

a 변수는 main() 함수 전에 전역변수, static int a 로 선언 되었으므로 실행 class 안에서 모두 사용 가능합니다.

하지만 b 변수는 increase() 함수 안에서 선언되었으므로 increase() 함수 안에서만 유효합니다.

increase() 함수를 수행한 후 main() 함수로 return 한 후 다시 increase() 함수가 호출되면

b는 다시 2로 초기화 됩니다.

오늘도 즐거운 하루 되세요.

  • *
    2017-06-16 09:09:28

    안녕하세요.

    main() 에서 increase();에 의해 increase() 함수가 호출되면

    b가 2로 초기화되고

    printf에 의해 %d, %d가 출력될 때 앞의 %d는 ++a가 적용되는데 전치연산자이므로 a의 값을 먼저 1증가시킨 후 %d로 출력합니다.

    그래서 출력은 2가 됩니다. b도 ++b임으로 3이 출력됩니다.

    a 변수는 main() 함수 전에 전역변수, static int a 로 선언 되었으므로 실행 class 안에서 모두 사용 가능합니다.

    하지만 b 변수는 increase() 함수 안에서 선언되었으므로 increase() 함수 안에서만 유효합니다.

    increase() 함수를 수행한 후 main() 함수로 return 한 후 다시 increase() 함수가 호출되면

    b는 다시 2로 초기화 됩니다.

    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.