개요


C언어 연산자 우선순위

  1. [], (), ., ->, ++, --

    [] : 첨자 연산자 - 배열(포인터)에서 원소를 지정할 때 사용
    () : 함수 호출 연산자 - C++에서는 함수 객체(function object)와 함께 사용도 가능하다. 그외에도 ()를 통해 기존 연산자 순위와 무관하게 우선순위를 가장 높게 처리할 수 있다.
     . : 참조에 의한 선택
    -> : 포인터에 의한 선택
    ++, -- (i++, i--) : 후위 증감 연산자
    
    동일 연산자 순위에서는 왼쪽에서부터 오른쪽으로 처리합니다.
    
  2. sizeof, &, *, +, -, ~, !, ++, --

    sizeof : 크기 연산자
    & : 주소 연산자(단항 연산자) - 해당 변수의 주소값을 반환합니다.
    * : 참조 연산자(단항 연산자) - 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환합니다.
    + : 양의 부호 (단항 연산자) - 덧셈 연산자와는 다릅니다(!).
    - : 음의 부호 (단항 연산자) - 뺄셈 연산자와는 다릅니다(!).
    ~ : 비트 NOT 연산자 - 비트를 뒤집습니다. (비트 반전)
    ! : 논리 NOT 연산자 - 논리식의 결과가 참이면 0을, 거짓이면 1을 반환합니다.
    ++, -- (++i, --i) : 전위 증감 연산자
    
    동일 연산자 순위에서는 오른쪽에서부터 왼쪽으로 처리합니다.
    
  3. 타입 캐스팅

    (type) : 형 변환을 합니다.
    
    ex)
    int a = 10;
    int b = 3;
    float c;
    
    c = a / b;
    printf("%f, c); -> 3.000000 출력
    c = (float)a / b;
    printf("%f, c); -> 3.333333 출력
    
    동일 연산자 순위에서는 오른쪽에서부터 왼쪽으로 처리합니다.
    
  4. *, /, %

    * : 곱셈 연산자
    / : 나눗셈 연산자
    % : 나머지 연산자
    
    동일 연산자 순위에서는 왼쪽에서부터 오른쪽으로 처리합니다.
    
  5. +, -

    + : 덧셈 연산자(이항 연산자) - 양의 부호 연산자와는 다릅니다(!).
    - : 뺄셈 연산자(이항 연산자) - 음의 부호 연산자와는 다릅니다(!).
    
    동일 연산자 순위에서는 왼쪽에서부터 오른쪽으로 처리합니다.
    
  6. <<, >>

    << : 왼쪽 시프트 연산자 - 정수 또는 열거형 형식 식의 비트를 왼쪽으로 이동합니다.
    >> : 오른쪽 시프트 연산자 - 정수 또는 열거형 형식 식의 비트를 오른쪽으로 이동합니다.
    
    부호 비트가 영향을 받도록 부호 있는 숫자를 왼쪽 시프트하면 결과가 정의되지 않았습니다.
    오른쪽 시프트 연산에서 부호 있는 음수의 결과는 구현에 따라 다릅니다. Microsoft C++ 컴파일러는 부호 비트를 사용하여 비어 있는 비트 위치를 채우지만 다른 구현도 그렇게 한다는 보장은 없습니다.
    
    동일 연산자 순위에서는 왼쪽에서부터 오른쪽으로 처리합니다.
    
  7. <, >, <=, >=

    관계연산자(relational operator) - 두 개의 값을 비교하는 논리식에 사용되는 연산자
    
    a < b : a가 b보다 작다. 다음의 명제가 참이면 1, 거짓이라면 0
    a > b : a가 b보다 크다. 다음의 명제가 참이면 1, 거짓이라면 0
    a <= b : a가 b보다 작거나 같다. 다음의 명제가 참이면 1, 거짓이라면 0
    a >= b : a가 b보다 크거나 같다. 다음의 명제가 참이면 1, 거짓이라면 0
    
    동일 연산자 순위에서는 왼쪽에서부터 오른쪽으로 처리합니다.
    
  8. ==, !=

    동등연산자(equality operator)
    
    a == b : a는 b와 같다. 다음의 명제가 참이면 1, 거짓이라면 0
    a != b : a는 b와 같지않다. 다음의 명제가 참이면 1, 거짓이라면 0
    
    동일 연산자 순위에서는 왼쪽에서부터 오른쪽으로 처리합니다.
    
  9. &

    & : 비트 AND 연산자 - 각각의 대응되는 비트를 비교하면서 두개가 모두 1이면 1을 반환합니다. 그외에 경우에는 0을 반환합니다.
    
    동일 연산자 순위에서는 왼쪽에서부터 오른쪽으로 처리합니다.
    
  10. ^

    ^ : 비트 XOR 연산자 - 각각의 대응되는 비트를 비교하면서 두개가 서로 다르다면 1을 반환합니다. 그외에 경우에는 0을 반환합니다.
    
    동일 연산자 순위에서는 왼쪽에서부터 오른쪽으로 처리합니다.