Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어의 연산자와 구두점 완벽 정리

C 언어에서 연산자란 무엇인가?

연산자(Operator)는 하나 이상의 객체(피연산자)에 적용되는 연산을 나타내는 기호입니다. 연산자는 주로 표현식(expression)에서 의미를 가지지만, 선언문에서도 사용될 수 있습니다. 일반적으로 영숫자가 아닌 특수 문자들로 이루어진 짧은 시퀀스 형태를 띱니다.

예를 들어 a + b에서 +는 두 값을 더하는 산술 연산자이며, x && y에서 &&는 논리곱을 수행하는 연산자입니다.

구두점(Punctuator)이란?

구두점(Punctuator)은 요소들의 목록을 분리하거나 종료하는 데 사용되는 기호입니다. 코드의 구조를 구분하고 컴파일러가 프로그램의 각 부분을 인식할 수 있도록 돕는 역할을 합니다.

C 언어의 연산자 및 구두점 목록

C 언어에서 사용되는 연산자와 구두점은 다음과 같습니다.

...   &&   -=   >=   ~   +   ;   ]

<<=   &=   ->   >>   %   ,   <   ^
>>=   *=   /=   ^=   &   -   =   {

!=    ++   <<   |=   (   .   >   |

%=    +=   <=   ||   )   /   ?   }

##    --   ==   !    *   :   [   #

연산자와 구두점으로 중복 사용되는 기호

일부 기호는 상황에 따라 연산자로도, 구두점으로도 사용된다는 점에 유의해야 합니다. 대표적인 예로 *, =, :, #, ,가 있습니다.

  • *: 곱셈 연산자로도 쓰이고, 포인터 선언 시에는 구두점 역할을 합니다.
  • ,: 쉼표 연산자로도 쓰이고, 함수 인자나 변수 목록을 구분하는 구두점으로도 쓰입니다.

쌍으로 사용해야 하는 구두점

여러 구두점은 반드시 짝을 이루어 사용해야 합니다. 여기에는 다음이 포함됩니다.

  • ( ) — 소괄호: 함수 호출, 조건식 등
  • [ ] — 대괄호: 배열 첨자 접근
  • { } — 중괄호: 블록 또는 초기화 목록

토큰 파싱 규칙: 최장 일치 원칙

컴파일러가 입력 텍스트를 해석할 때는 가능한 한 가장 긴 시퀀스를 하나의 토큰으로 만들려고 시도합니다. 이를 최장 일치(longest match) 원칙이라고 합니다.

예를 들어 a+++++b를 파싱할 때, 컴파일러는 다음과 같이 인식합니다.

a ++ ++ + b  → 유효하지 않은 구성

컴파일러는 다음과 같이 해석하지 않습니다.

a ++ + ++ b  → 이 경우 유효할 수 있음

즉, 개발자가 의도한 방식과 다르게 해석될 수 있으므로, 증감 연산자를 연속해서 사용할 때는 공백이나 괄호를 통해 의도를 명확히 하는 것이 좋습니다.