About C – “연산자, 토큰과 구두점의 차이”
About C – “연산자, 토큰과 구두점의 차이”
10월 1, 2021
연산자란?
- 연산자는 변수 또는 상수에 대하여 무엇인가를 행하도록 하는 단어나 기호입니다.
- 피연산자는 연산자가 연산을 하는 대상을 의미합니다.
a = b + 1 // +,=는 연산자이고, a,b,1은 피연산자입니다.
- 피연산자의 수에 따라서 단항 연산자, 2항 연산자, 3항 연산자로 구분합니다.
토큰과 구두점의 차이
- 토큰이란, C 프로그램을 구성하는 기본 단위입니다.
- 예약어, 연산자, 구두점, 식별자, 상수, 문자열 등이 “토큰” 에 속합니다.
- 구두점이란, 토큰을 구분하기 위해 사용하는 기호입니다.
- [],(),콤마,;,= 등이 있습니다.
- 다만, =, [], (), 콤마 등은 같은 모양의 연산자도 존재합니다.
- 소스의 어느 부분에서 사용하느냐에 따라서 연산자인지 구두점인지 구별이 가능합니다.
산술 연산자
- 산술 연산자에는 더하기, 빼기, 곱하기, 나누기, 나눗셈의 나머지를 계산하는 연산자가 있습니다.
- *,/,%(나머지계산 연산자) 는 우선순위가 같고 +, – 보다 높습니다.
정수형의 연산 결과는 정수형입니다
#include <stdio.h>
int main()
{
int a = 5, b = 2;
double c = 5, d = 2;
printf("int형 5 나누기 int형 2의 결과는 = %d\n", a/b);
printf("double형 5 나누기 double형 2의 결과는 = %f", c/d);
return 0;
}
// int형 5 나누기 int형 2의 결과는 = 2
//double형 5 나누기 double형 2의 결과는 = 2.500000
이스케이프 시퀀스
- 이스케이프 시퀀스란, 탈출 문자 또는 확장 문자열이라고도고 합니다.
- 역슬래시와 영문자, 특수문자로 이루어진 문자 조합입니다.
- 문자 상수 내에서 개행 문자, 작은 따옴표, 특별한 의미를 갖는 문자 등을 나타내기 위해서 사용합니다.
- 두 개의 문자가 아닌, 하나의 의미를 갖는 단일문자로 1byte입니다.
대입 연산자
- 대입 연산자는 변수 = 수식 과 같이, 대입하는 연산을 수행할 때 사용합니다.
a = 10;
은 a에다가 10을 대입한다는 의미입니다.a = b = 5
는 오른쪽부터 왼쪽으로 결합됩니다.b = 5
를 수행하고,a = b
를 수행합니다.- 산술 연산자와 대입 연산자를 혼합하면 다양한 혼합 대입 연산자를 만들 수 있습니다.
#include <stdio.h>
int main()
{
int a = 4;
int b = 5;
a = b + 4; // a에다가 b+4의 값 9을 대입한다. 변수 = 변수 + 수식
b = b + 1; // b에다가 b+1의 값 6을 대입한다. 변수 = 변수 + 수식
//위의 문장은 b+=1와 같은 표현
}
관계 연산자
- 관계 연산자, 혹은 비교 연산자는 루프나 조건문 등에서 크기나 조건 등을 비교할 때 사용하는 연산자입니다.
- =, >, <= 등 크기를 비교하는 연산자가 있습니다.
- 연산 결과가 참이면 1을, 거짓이면 0이 나옵니다.
- 문자형 데이터도 대소 관계를 비교할 수 있습니다. 문자형 데이터들의 크기를 비교할 때는 ACSII 코드 값으로 비교합니다.
- == 는 같은지를 비교하는 연산자입니다.
- != 는 같지 않은지를 비교하는 연산자입니다.
논리 연산자
- && , || , ! 의 종류가 있습니다.
- AND, OR, NOT 의 의미를 가집니다.
- AND연산자는 두 피연산자가 모두 참일 때 참을,
- OR연산자는 둘 중 하나만 참이면 참을,
- NOT연산자는 피연산자가 참이면 거짓으로, 거짓이면 참으로 만듭니다.
관계 연산자와 논리 연산자를 같이 사용할 수 있습니다.
“height값이 160 이상 165 미만이면” 의 조건을 만들어보겠습니다.if(height>=160 && height<165)
우선순위가 같으면, 왼쪽에서 오른쪽으로 연산을 진행합니다.
두 피연산자 height가 왼쪽 160보다 작거나 같고, 165보다 작으면 ‘참’이 되겠지요.
비트 연산자
비트 연산자는 비트 단위로 연산을 할 때 사용하는 연산자입니다.
- 수를 2진수로 바꾼 뒤, 비트별로 연산합니다.
- &의 경우 : 대응되는 비트가 모두 1이면, 1을 반환합니다.
- |의 경우 : 대응되는 비트 중에서 하나라도 1이면, 1을 반환합니다.
- ^의 경우 : 대응되는 비트가 서로 다르면, 1을 반환합니다.
- ~의 경우 : 비트를 1이면 0으로, 0이면 1로 반전시킵니다.
조건 연산자
- 항이 3개이기 때문에, 삼항 연산자라고도 합니다.
- if ~ else문을 한 줄로 간결하게 표현할 수 있습니다.
- 수식 1 ? 수식 2 : 수식 3과 같이 사용합니다.
- 수식 1의 조건이 참이면 수식 2를, 거짓이면 수식 3을 실행하라는 의미입니다.
증가, 감소 연산자
- 피연산자가 하나인 단항 연산자입니다.
- ++나 –의 경우가 있는데, 이는 피연산자의 좌측이나 우측에 쓸 수 있습니다.
- 피연산자 앞에 쓰는 경우를 전치라 하고, 증/감이 먼저 일어납니다.
- 피연산자 뒤에 쓰는 경우를 후치라 하고, 증/감이 후에 일어납니다.
x++;
의 경우 : 후치, 수식을 평가한 후 증가가 됩니다.
cast연산자
- 이미 지정된 자료형을 다른 자료형으로 일시적으로 강제로 바꾸는 연산자입니다.
(자료형)값_혹은_변수
로 사용합니다.- 우선 순위는 두 번째로 높습니다.
콤마 연산자
- 여러 개의 수식을 하나의 수식처럼 표현할 때 사용합니다.
- 수식들을 콤마에 의해 열거되어 있는 순서대로 평가합니다.
- 왼쪽부터 평가하여 오른쪽 식의 값을 결과로 합니다.
z = (x = 5, y = 4, x+y)
에서, 왼쪽에서 오른쪽으로 차례로 수행한 후 결과인 9를 z에 대입합니다.- 여러 줄을 한 줄로 줄일 때 주로 사용합니다.
제가 이해한 C언어 연산자 정리입니다.