C Operator   C 연산자

(2021-07-07)

연산자


1. C 언어에서, 연산자 종류산술 연산자  :  ( +  -  *  /  % )
     -  + (덧셈), - (뺄셈), * (곱셈), / (나눗셈), % (나머지)
     -  한편, 거듭제곱 연산자가 없어, 라이브러리 math.h의 pow()를 씀

  ㅇ 부호 연산자  :  ( +  - )
     -  + (양수), - (음수)

  ㅇ 대입 연산자  :  ( =  +=  -=  *=  /=  %= )
     -  `=`  : (오른쪽 표현식을 평가하고, 그 결과를 왼쪽에 대입)

     * 복합 산술 연산자 (대입연산,산술연산을 함께 수행)
     -  `+=` : 例) a += b => a = a + b
     -  `-=` : 例) a -= b => a = a - b 
     -  `*=` : 例) a *= b => a = a * b
     -  `/=` : 例) a /= b => a = a / b
     -  `%=` : 例) a %= b => a = a % b

  ㅇ 증감 연산자   :  ( ++  -- )
     - 例) a++ (주변 연산을 진행한 후 1 증가), ++a (1 증가시킨 후 주변 연산을 진행)

  ㅇ 비교 연산자 (6개)  :  ( ==  !=  <=  <  >=  > )
     - C 언어는, 논리값 상수(true,false)을 제공 안하므로, 0 (false),0 이외 숫자 (true)을 사용
     - 例) printf("%d", 10 < 20) => 1 // (즉, true인 1을 출력 함)

  ㅇ 논리 연산자   :  ( ||  &&  ! )
     - || (OR),  && (AND),  ! (NOT)

  ㅇ 비트 연산자   :  ( |  &  ~  ^  <<  >> )
     - 비트 논리 연산자 :  | (비트 OR), & (비트 AND), ~ (비트 반전 NOT), ^ (비트 XOR)
     - 비트 이동 연산자 :  << (왼쪽 시프트), >> (오른쪽 시프트)

  ㅇ 포인터 연산자  :  ( *  &  [] )
     - &op : 변수 op가 위치한 메모리의 주소를 구함
     - *op : 포인터 변수 op가 갖는 주소에 저장된 값을 구함

  ㅇ 구조체 연산자  :  ( .  -> )
     - 도트 연산자 (.)   : 일반 구조체의 멤버 접근 
     - 화살표 연산자 (->): 구조체 포인터의 멤버 접근

  ㅇ 삼항 연산자  :  ( ? : )
     - [조건식] ? [참일 경우 반환값] : [거짓일 경우 반환값]

  ㅇ 기타 연산자
     - 쉼표 연산자    :  ,
     - sizeof 연산자  :  sizeof
     - 캐스트 연산자    : (타입) 표현식
     - 괄호 연산자   :  ()

  ㅇ C++ 연산자   :  new  delete  ::  .*  ->*


2. 연산자 우선순위(precedence) 및 결합법칙

  ㅇ 최우선 => [결합방향 : 좌에서 우로 →]
     - (괄호 연산자) (식)                                          
  ㅇ 순위 1 => [결합방향 : 좌에서 우로 →]
     - (후위 증감 단항 연산자) ++  -- , (함수 호출) (), (배열 인덱스) [] ,
       (구조체 멤버) . , (구조체 포인터) -> , (복합 리터럴) (type){list}
  ㅇ 순위 2 => [결합방향 : 우에서 좌로 ←]
     - (전위 증감 단항 연산자) ++  -- , (부호) +  - , (논리 연산자) !  ~ , (형변환) (type) ,
       (간접 참조 연산자) * , (주소 추출 연산자) & , (크기 계산 연산자) sizeof 
  ㅇ 순위 3 => [결합방향 : 좌에서 우로 →] 
     - (산술 연산자) *  /  %
  ㅇ 순위 4 => [결합방향 : 좌에서 우로 →] 
     - (산술 연산자) +  - 
  ㅇ 순위 5 => [결합방향 : 좌에서 우로 →] 
     - (비트 연산자) <<  >> 
  ㅇ 순위 6 => [결합방향 : 좌에서 우로 →] 
     - (비교 연산자) <  <=  > >=
  ㅇ 순위 7 => [결합방향 : 좌에서 우로 →]
     - (비교 연산자) ==  !=
  ㅇ 순위 8 => [결합방향 : 좌에서 우로 →]
     - (비트 연산자 AND) &
  ㅇ 순위 9 => [결합방향 : 좌에서 우로 →]
     - (비트 연산자 XOR) ^
  ㅇ 순위 10 => [결합방향 : 좌에서 우로 →]
     - (비트 연산자 OR) |
  ㅇ 순위 11 => [결합방향 : 좌에서 우로 →]
     - (논리 연산자 AND) &&
  ㅇ 순위 12 => [결합방향 : 좌에서 우로 →]
     - (논리 연산자 OR) ||
  ㅇ 순위 13 => [결합방향 : 우에서 좌로 ←]
     - (삼항 연산자) ? :
  ㅇ 순위 14 => [결합방향 : 우에서 좌로 ←]
     - (대입 연산자) = ,  (산술 대입 연산자) +=  -+  *=  /=  %= ,
       (복합 대입 연산자) <<=  >>=  &=  ^=  |=
  ㅇ 순위 15 => [결합방향 : 좌에서 우로 →]
     - (콤마 연산자) ,

C
   1. C 언어   2. C 기초 문법   3. C 연산자  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"