정보처리기사

깨알 C언어 1-10강 핵심 요약

꼬드리 2024. 8. 6. 14:55

https://youtu.be/Lj0EszeZo2A?list=PLdaE6YENrbZA8sXCvVBUWjFwFI2zb4tlK

 

 

- 02. 컴파일러, 인터프리터

💡컴파일 : 인간의 고급 언어를 컴퓨터가 해석할 수 있는 저급 언어로 번역.

 

전처리기 -> 컴파일러 -> 어셈블러 -> 링커

전처리기- 전처리 구문을 처리하는 과정

컴파일러 - 고수준의 인간 언어를 저수준 언어로 변환(기계어와 가장 가깝게)

어셈블러 - 완벽한 기계어로 바꿔주는 역할

링커 - 여러 오브젝트 파일이나 라이브러리를 합치는 역할

 

컴파일러 VS 인터프리터

- 번역 : 컴파일러의 경우, 고급 언어로 작성된 프로그램을 컴퓨터가 이해하는 언어로 번역. 전체를 번역하므로 시간이 오래 걸리지만, 한번 번역한 후에는 재번역하지 않아서 실행 속도가 빠름.( C, C++, JAVA)

- 통역 : 인터프리터의 경우, 한 줄씩 읽어서 실행하는 프로그램. 일종의 통역 시스템. 번역과 실행이 동시에 이루어지기 때문에 별도의 실행 파일은 존재하지 않는다. (Ruby, php, JS)


 

- 03. 변수

변수 : 데이터를 저장할 수 있는 메모리의 기억공간.

변수에서는 특히 '크기'가 중요하다. 데이터의 낭비를 최소화 하는 것이 중요하기 때문.  

 

변수 생성 규칙 및 특징

- 예약어는 사용 불가, 공백 포함 불가, 첫 글자는 영문과 언더바만 사용 가능, 언더바 외의 특수문자 불가, 대소문자 구분

 

변수 타입

문자형 char 1byte

정수형 short 2 byte   int 4 byte(예전엔 2byte)   long 4 byte

실수형 float 4 byte  double 8 byte

 

변수 선언은 Int

Int age;
Int age = 40;

 

- 04. 변수의 종류와 유효범위

지역 변수: 함수/블록 안에서 선언하는 변수. 함수/블록의 종료와 함께 메모리상에서 소멸. 초기값이 없으면 쓰레기값이 들어간다. 스택 영역에 저장된다.

전역 변수: 함수 블록 밖에서 선언되며, 전체 함수에 영향을 준다. 초기값이 없으면 0이 들어간다. 프로그램 종료시 메모리에서 소멸. 데이터 영역에 저장됨.

 

정적 변수: static으로 선언, 함수가 종료되어도 소멸되지 않고 메모리상에 값이 그대로 유지.

동적 변수: 메모리 동적 할당으로 생성되는 변수. 런타임에 메모리를 할당. 무조건 포인터를 사용하며 힙 영역에 저장. 


 

- 05. 산술연산자

C언어에서 정수/정수는 소수점이 없다. (ex 3/4 = 0)

 

단항 연산자에서 헷갈리는 부분

a = 10;
b = a++; //a인 10값을 b에 먼저 넣고 a가 11이 된다.
c = ++a; //a를 먼저 12로 만든 뒤 c에 넣는다.
// a는 12, b는 10, c는 12

++가 앞에 있으면 먼저 1더하고 나서 식을 수행한다.

++가 뒤에 있으면 식을 수행하고 나서 1을 더해준다.

 

 


- 06. 연산자 우선 순위

예시) 
int a = 3
int b = 4
int c = 5
int d = 6

d%b + ++a*c-- = ?
// 2+20 = 22

 


- 07. 관계, 논리 연산자, 조건문 

if문 : 신호등처럼 특정 조건이 주어졌을 때 무엇을 할 것인가.

switch문 : 여러 개 중에 직접 선택을 하는 상황에서 그 결과값을 얻어내는 것. 일종의 자판기. 

 


- 08. 논리 연산자, 증감 연산

https://ideone.com/ 

 

 


 

- 09. 산술 연산자

y = 3+2*(x=7/2)
// 정수/정수는 정수이기 때문에 x = 3
// y = 9

 

int a= 10, b = 20;
num = (a++ == 11) && (b ++ ==20)
// 이미 a++ !== 11이기 때문에 and 연산자의 수행은 필요 없다. 답은 0.

 

 

 


- 10. 출력 형식

실수의 경우 소수점 6자리까지 출력된다. (ex 3.260000)

 

printf("값 : %-6.1", 3.26) : 6.1인 경우 6자리를 우선 만들어두고 소수점 1자리까지 반올림하여 잘라 표현한다. 이때 우측부터 채운다. 그러나 -가 붙은 경우, 좌측부터 수를 채우고 소수점 1자리까지 표현할 때는 반올림을 한다. 따라서 답은 3.3.