C Operator, C++ Operator   C 연산자, C++ 연산자

(2019-11-21)

연산자

1. C 언어에서, 연산자 종류산술 연산자  :  ( +  -  *  /  % )
     -  + (덧셈), - (뺄셈), * (곱셈), / (나눗셈), % (나머지)

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

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

     * 복합 산술 연산자 (대입연산,산술연산을 함께 수행)
     -  `+=` : 例) 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 연산자
[C 언어 컴파일] [C 변수,자료형] [C 상수,문자,문자열] [C 함수] [배열,포인터] [구조체,공용체]

 
        최근수정     요약목록     참고문헌