본문 바로가기
C

[C] 연산자 우선순위와 평가 순서 , 범위(scope), const

by imagineer_jinny 2022. 2. 26.

본 내용은 POCU COMP2200: C 언매니지드 프로그래밍 강의를 토대로 작성하였습니다.

 

  • 평가 순서를 강제하는 연산자
    • &&, || 등은 시퀀스 포인트임
    • 즉, 시퀀스 포인트 앞에 것을 먼저 평가해야 한다
    • 왼쪽부터 오른쪽으로

 

또 다른 예

 

 

 

  • 범위(scope)
    • 총 4가지의 범위가 있다
      • 블록 범위
      • 파일 범위
      • 함수 범위
      • 함수 선언 범위

 

  • 블록 범위
    • 이미 아는 내용
    • 중괄호({}) 안에 선언한 것들은 그 블록 안에서만 사용 가능
    • 블록 안에 또 다른 블록을 넣을 수도 있다
      • 그러면 안쪽 블록은 바깥 블록에 접근 가능
      • 그 반대는 안됨
  • 파일 범위
    • 어떤 블록이나 매개변수 목록에도 안 속하고 파일 안에 있는 것

 

  • 파일 범위에 있는 변수의 메모리 위치

 

  • 함수 범위
    • 유일한 예 : 레이블(label)
    • goto 같은 데서 쓰는 것
    • 함수 안에서 선언된 레이블은 함수 어디에서라도 접근 가능
      • 다른 범위들은 위에서 선언된 것만 접근 가능했음

 

  • 함수 선언 범위
    • 함수 선언의 매개변수 목록에 있는 것은 그 목록 안에서 접근 가능
    • 많이 쓸 일은 없음
    • 다음과 같은 예는 괜찮음

 

 

  • const

 

  • const 베스트 프랙티스
    • 기본적으로 모든 변수에 const를 붙이자
    • 정말 값 변경이 필요한 변수에만 const를 생략하자
    • 원칙적으로 말하면 언어의 기본 동작이 바뀌어야 함
      • 아무것도 안 붙이면 const
      • 굳이 프로그래머가 바뀌는 걸 원하면 앞에 뭔가 붙이기
      • Rust란 언어가 이런 일을 매우 잘했음
let num1=1024;  //(기본) 변경 불가능
let mut num2 =1024; //변경 가능

 

 

댓글