C 언어

[Unreal Engine 8기] C언어 2일차

조현묵 2026. 2. 24. 21:18

변수(Variable) <-> 상수(Constant)

변할 수 있는 수. 아래와 같은 형식으로 선언하게 됩니다.

 

자료형 변수명 = 값;

자료형 변수명 = 값;

unsigned 키워드와 signed 키워드

부호 없는 Vs. 부호 있는.

unsigned를 자료형 앞에 붙히면 음수는 표현 불가능.

대신 양수 부분이 2배 늘어납니다. 서식 지정자로는 %u를 쓰면 됩니다.

모든 자료형은 사실 앞에 signed 키워드가 생략되어 있습니다.

오버플로우

오버플로우(Overflow)

자료형이 표현 가능한 수를 넘어서는 경우.

그릇에 물을 너무 많이 따르면 넘쳐 흐르는 것과 같습니다.

N은 각 자료형의 크기. char는 8, int는 32를 대입.
char 자료형의 오버플로우 도식화.

컴퓨터는 문자를 이해할 수 없음.

누군가는 “어, char 자료형의 변수에 문자 저장 가능한데요?” 라고 반문할 수 있습니다. Nope!!!

프로그래머는 문자로 작성된 소스코드를 컴퓨터가 그대로 이해할 수 없기에

컴파일러를 통해 이진패턴으로 만들었다는 걸 기억해야 합니다. 이 과정을 빌드 프로세스라고 불렀습니다.

즉, char 자료형의 변수에 문자를 그대로 저장할 수 없다는 뜻입니다. 뭔가 처리가 필요합니다.

 

인코딩(Encoding) Vs. 디코딩(Decoding)

형태 A에서 형태 B로 변환하는 것을 인코딩이라 합니다.

반대로 형태 B에서 형태 A로 변환하는 것을 디코딩이라 합니다.

 

ASCII(American Standarded Code for Information Interchange)

문자 형태의 데이터와 숫자 형태의 데이터 사이의 인코딩 규약 중 하나.

여러 인코딩 규약이 있으나, 그 중 가장 쉽고 대표적인 규약.

규칙 표는 ASCII Chart를 참고하시면 됩니다.

어쨋든 컴퓨터에 값이 저장되기 위해서는 숫자 형태여야 한다는 점을 기억합시다.

ASCII

지역별 문자 인코딩과 유니코드

과거에는 ASCII, EUC-KR 등등 각 나라마다 다른 문자 인코딩들이 존재했습니다.

이는 서로 호환되지 않아 다국어 지원에 문제가 생겼습니다.

그래서 전세계 모든 문자를 표현 및 처리하기 위해 만들어진 문자 인코딩이 유니코드(Unicode)입니다.

유니코드에는 UTF-8, UTF-16, UTF-32가 있습니다.

 

scanf()

키보드로부터 데이터를 입력 받을 수 있게끔 해주는 함수.

scanf() 함수

연산자(Operator) Vs. 피연산자(Operand)

피연산자와 함께 사용되어서 계산 결과를 만들어 내는 기호.

ex) 5 + 2에서 5와 2를 피연산자, +를 연산자라고 합니다.

 

연산자 우선순위(Operator Priority)와 결합법칙

덧셈과 곱셈이 뒤섞여 있는 식에서 우리는 묵시적으로 곱셈을 먼저 계산합니다.

이처럼 연산자들 간에는 우선순위가 존재합니다. ex) 3 + 5 * 2

만약 덧셈만 있는 식에서는 좌에서 우로 계산한다는 결합법칙도 있습니다. ex) 3 + 5 + 2

 

산술 연산자의 종류

덧셈, 뺄셈, 곱셈, 나눗셈, 나머지(%). 여기서 나머지 연산자가 어려울 수 있습니다.

나눗셈은 몫을 구하는 연산자이고, 나머지 연산자는 말그대로 나눗셈의 나머지를 구하는 연산자입니다.

 

정수 피연산자와 실수 피연산자

int 자료형끼리의 나눗셈은 그 결과도 int.

float 자료형끼리의 나눗셈은 그 결과도 float임에 주의하셔야 합니다.

또, C언어에서는 float 자료형의 나머지 연산은 불가능합니다.

 

복합 대입 연산자

산술 연산과 대입 연산이 함께 계산되는 연산자.

ex) 복합 대입 연산자 *=은 곱셈 연산 후 대입됩니다.

 

(Value), (Expression), (Statement)

값 = 리터럴과 같음

은 피연산자와 연산자로 이루어져서 값으로 귀결되는 것들.

은 컴퓨터가 수행할 명령어.

 

증감 연산자

증가/감소의 줄임말. 앞서 살펴본 연산자들과 다르게 단항의

피연산자를 가지는게 특징. ex) ++Num;

증감 연산자에는 전치 증감 연산자와 후치 증감 연산자가 있습니다.

각각 피연산자의 앞 혹은 뒤에 붙습니다.

 

전치/후치 의미

전치는 지금 당장, 후치는 다음 줄에 연산됩니다.

ex) ++Num이라면 지금 당장 Num이 1 증가.

      Num++이라면 다음 줄에 Num이 1 증가.

전치/후치 증감 연산자

거짓에 준하는 값(falsy)

NULL, ‘\0’, …

 

논리 연산자

피연산자를 참 혹은 거짓으로 평가한 후에 논리 연산을 수행합니다.

계산된 결과값도 참 혹은 거짓입니다. 즉, 불대수(boolean) 연산자.

ex) 7 && 0, !7, …

 

논리 연산자의 종류

논리 곱 연산자(&&), 논리 합 연산자(||), 논리 반전 연산자(!)

참고로 논리 합 연산자 기호는 엔터 위, Shift + \를 누르면 됩니다.

 

논리 연산자 꿀팁

“논리”라는 단어에 집중하기보다 곱 또는 합 단어에 집중하시면 됩니다.

논리 곱 연산자는 곱셈으로, 논리 합 연산자는 덧셈으로 치환해서 생각합시다.

그럼 굳이 진리표(truth table)를 외울 필요가 없습니다.

논리 연산자

관계 연산자

피연산자 간의 관계(대소, 대등, …)를 판단하는 연산자.

ex) 3 < 2, 4 != -1, 3 == 3, …

 

주의할 점은 대등 연산자가 수학와 다르게 두개.

등호도 두 개를 작성해야 대등 연산자(==)

반대로 다르다는 !=

잘못된 비교 연산
비교 연산

Short-Circuit

&& 연산자에서 앞 쪽 피연산자가 false라면 뒤 쪽은 평가하지 않고 곧바로 false로 귀결됩니다.

|| 연산자에서 앞 쪽 피연산자가 true라면 뒤 쪽은 평가하지 않고 곧바로 true로 귀결됩니다.

&&는 곱셈입니다. 앞이 0이면 뒤는 뭐가 와도 그 결과가 false입니다. 그래서 뒤쪽은 평가하지도 않고 0입니다.

|| 연산도 덧셈이니, 앞이 1이면 뒤는 무슨 수가 와도 그 결과가 true입니다.

 

형변환 연산자(Type-cast Operator)

자료형 A에서 자료형 B로 변환 시켜주는 연산자.

명시적 형변환이라고도 부릅니다.

형변환 연산자

삼항 연산자(Ternary Operator)

피연산자로 세 개의 항을 갖는 연산자.

이후에 배우겠지만, 조건문 if-else의 대용으로 가능합니다.

 

삼항 연산자 해석이 어렵다면

ex) 4 < 5 ? 0 : 1;

위와 같은 식은 “4 보다 5가 더 크냐?”하고 물어보는 것입니다.

참이라면 :(colon)을 기준으로 앞에 값(또는 식)이 계산 결과가 됩니다.

거짓이라면 colon 뒤에 값(또는 식)이 계산 결과로 나옵니다.

삼항 연산자의 활용

 

sizeof

단항 피연산자를 가지며, 피연산자의 자료형 크기를 바이트 단위로 반환합니다.

sizeof

 

'C 언어' 카테고리의 다른 글

[Unreal Engine 8기] C언어 6일차  (0) 2026.03.03
[Unreal Engine 8기] C언어 5일차  (0) 2026.02.27
[Unreal Engine 8기] C언어 4일차  (0) 2026.02.26
[Unreal Engine 8기] C언어 3일차  (0) 2026.02.25
[Unreal Engine 8기] C 언어 1일차  (0) 2026.02.23