unreal 5기

250812 언리얼엔진 본캠프 7일차 C언어를 배워보자

parkjinnam 2025. 8. 12. 20:19

오늘은 본캠프 2주 차부터 시작하는 C언어를 처음부터 차근차근 배우기 시작하는 날이다 컴퓨터는 살마처럼 여러 가지 사고에 의한 유추가 불가능하기 때문에 직선적으로 사고를 처리한다. 예컨대 눈치라는 게 없어서 정확하게 어떤 데이터를 넣으면 사전에 입력된 동작을 일정하게 수행한 후 결과를 내놓는다. 만약 쇼츠에서 얼핏 보았던 "마트 가서 우유 2개 사 오고 계란 있으면 4개 사와"라고 컴퓨터에 입력하면 후술 한 4개를 사 오는 주체가 무엇인지 컴퓨터는 자체적으로 판단을 못한다. 때문에 컴퓨터를 위한 전용 언어와 문법체계가 만들어졌고 우리가 배울 c언어도 그중에서 High-Level Language에 속하는 언어 중 하나이다. 이러한 컴퓨터 언어를 이용하여 컴퓨터가 수행할 행동을 작성하는 것을 코딩이라 하며 이런 작업을 전문적으로 하는 사람은 프로그래머 되시겠다.

코딩을 작성하는 에디터는 다양하게 존재한다 코딩 괴수는 메모장으로도 가능하다지만 수 많은 에디터들 그중에서 우리는 Microsoft사의 Visual studio를 사용하여 연습을 해볼 것이다. 본 캠프에서는 코딩에 관한 역사와 간단한 설명 후 예제를 주는데 그 예제를 풀어보도록 하자.

그 유명한 Hello, world!
잘 출력된다

다음 예제를 보자

이건 어떻게 출력될까?
\n 으로 인해서 줄바꿈 되어 출력된다.

 

다음 예제는 어떨까

이번엔 좀 많다

 

다른건 어떻게 나올지 대강 보이는데 4번째 줄이 어떻게 출력될지 모르겠다 한번 결과를 확인해 보자

유추한대로 마지막 줄에는 해당 경로를 출력하는 걸로 마무리된다.

 

해보면 참 재밌다 중간중간 문장을 마무리하는 ;를 생략하거나 해서 오류가 발생하기도 했지만 이 부분도 빨리 익숙해지면 더 다양한 것을 구현할 수 있을 거 같다.

이번에는 서식지정자를 이용하는 것이다 서식지정자는 다음과 같다.

%d : decimal의 약자, 10진수로 대체된다.

%o : octal의 약자, 8진수로 대체된다.

%x : hexadecimal의 약자, x는 소문자, X는 대문자로 대체된다.

%u : unsigned의 약자, 양수로 대체된다.

%c : character의 약자, 문자로 대체된다.

%s : string의 약자, 문자열로 대체된다.

%f : floating point의 약자, single precision

%lf : double precision floation point

 

자 이를 바탕으로 다음 예제를 풀어보자

어떤 문장이 출력될까?

 

뭔가 %d는 10진수로 나타내는 서식 지정자이니 그 뒤에 적힌 3245 * 2342의 결과가 십진수로 표현될 거 같다 한번 확인해 보자

계산기로 계산해보자

 

정답이다! 다음 예제는 뭔가 복잡하다

대체 저 서식지정자는 뭔가

 

뭔가 %d가 10진수이니 %2d는 뭐 20진수인가 싶다가도 %-7d는 또 뭐고 무슨 서식 지정자인지 도저히 모르겠다 과연 이 예제는 어떤 결과를 출력할까?

어?

 

일단 ", " 사이의 [, ] 도 같이 출력되는 건 알 수 있는데 대괄호 안의 숫자는 대관절 어떠한 연유로 저렇게 표현되는 건지 모르겠다 나중에 튜터님에게 물어봐야겠다. 다음 예제도 보자

진짜 뭘까?

 

검색해 보면 %f는 소수점으로 표기하는 서식 지정자로서 소숫점 아래 6자리 까지 표현하는게 기본이라고 한다. 그렇다면 첫번째는 분명히 [3.141592]로 출력되면서 줄이 바뀔건데 그 다음은 소숫점 아래 2자리 까지 표현하는 건가? 그럼 %5.2f는 어떻게 나오는 건지 감이 안 온다 한번 결과 값을 보자

봐도 모르겠다

 

이것도 튜터님에게 물어보도록 하자. 다음은 리터럴(Literal)이다. 리터럴은 소스코드에 적힌 값 그 자체를 뜻한다고 한다

자 이 코드는 무엇을 의미할까?

 

일단 printf()를 쓰지 않았으니 main에 저 값들이 포함되지 않을까 생각된다. 한번 해보자

역시 뭔가 출력되지는 않는다.

 

그렇다면 해당 리터럴 즉 값들이 그냥 main 함수 안에 들어가 있을 뿐이라 생각하면 될 것 같다.

 

반가운 printf()가 보인다. 이대로 하면 에러가 발생하고 마지막 줄에 꼭 }로 닫아주자

 

각각의 조건 서식자들에 맞추어서 뒤의 숫자들이 표현될 것 같다. 한번 보자

 

다음 예제는 자료형에 관한 것이다.

자료형에 대한 설명

 

흔히 컴퓨터의 저장 단위인 byte, bit 등으로 한 자료에 최대로 표현 가능한 크기가 정해져 있다.

 

아까와 같지만 각각의 주석이 달려있다.

 

결과는 아까와 같다. 다음은 변수이다. 수학에서 익히 들어봤듯 변할 수 있는 수이다. 코드를 작성함에 있어서 변수를 선언할 때가 있는데 항상 변수는 해당 스코프의 최상단에 위치시켜야 한다고 한다. 단 C++에서는 원하는 위치에 선언하고 사용해도 된다 하는데 소스코드가 많아질 경우 변수 선언 위치와 사용 위치가 멀어져서 가독성이 떨어지기 때문이라고 한다.

 

전체적인 흐름을 보자 메인 함수에서 num은 2147483647이라 선언하고 pi를 선언한다(double은 위의 자료형 참고) num 값을 십진수로 표현한 뒤 줄을 바꾸고 pi = 3.141592라 선언하고 pi값을 %lf 조건서식에 맞추어 표현해 준 뒤 함수를 마치는 것으로 보인다 한번 보자.

num = 뒤에 %d가 있기에 num = (num 값을 10진수로) 형식으로 출력된다

 

예상했던 것과 다르지만 왜 인지는 금방 이해할 수 있었다. 다음 예제도 보자

 

signed는 부호 있게, unsigned는 부호가 없이 표현하는 대신 양수 부분의 값이 2배로 늘어난다 그럼 결과는 다음과 같다.

 

오늘 배운 내용은 기본적인 출력에 관한 내용이었다. 예측했던 내용이 틀릴 때도 있었고 맞을 때도 있었다. 이러한 문법이 눈에 익숙해지도록 한 번씩 훑어보면서 복습할 수 있도록 하자