C 언어
1. C 기초
init main(void) : 프로그램 실행 시 처음 진입, 실행하는 코드 블록
printf : 텍스트 출력, 텍스트 출력을 위해서 #include <stdio.h> 가 필요(해당 함수를 제공하기 때문)
(파일명).c : c 언어로 작성된 파일 확장자
- 컴파일러 : c 언어 와 같은 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해할 수 있는 머신 코드(2진법)으로 변환하는 프로그램
clang -o (변환된 머신코드 파일명) (변환할 소스코드 파일명) : 컴파일 커멘드
./(변환된 머신코드 파일명) : 머신코드 실행 커맨드
2. 문자열
- c 언어는 오래된 언어이기 때문에 변수가 저장하는 데이터의 종류를 변수 앞에 표시해야 함
= (할당 연산자) : 오른 쪽에 있는 내용을 왼쪽으로 옮김
printf("hello, %s/n", 변수명); : % 는 형식지정자, %s 는 문자열 변수를 표시해줌
make (파일명) : 소스코드에서 참조하는 파일을 같이 링킹하여 컴파일해주는 커맨드
3. 조건문과 루프
int : 정수인 변수를 선언할 때 사용
변수 = 변수 + 1, 변수 += 1, 변수++ : 덧셈 연산, 1 증가
if(조건식){}else if(조건식){}else{} : 조건식을 만족할 때 괄호 안에 있는 코드 실행
== (일치 연산자) : 값이 같음을 의미
while(조건식){} : 조건식을 만족할 때 괄호 안에 있는 코드를 반복 실행
for(초기화;조건식;업데이트) : 특정 횟수 만큼 괄호 안에 있는 코드를 반복 실행
4. 사용자 정의 함수, 중첩 루프
(반환 타입) 함수명 (인자 타입) : 사용자 정의 함수, 함수명 앞에 함수 실행 결과를 외부에서 받고자 하면 실행 결과의 타입을 작성함. 함수에 사용할 인자를 받고 싶으면 함수명 뒤에 인자 타입을 작성함.반환 값이나 인자가 없으면 void로 표시.
- 프로토타입 : main 함수 밑에 작성된 함수들을 컴파일러에게 미리 알려줘서 해당 함수를 찾아 실행할 수 있도록 해줌
- 쓰레기 값(garbage value) : 변수를 선언만 하고 값을 할당하지 않았을 때 기존에 남아있던 값으로 자동 할당됨 *가상 메모리 구조상 선형적으로 접근 되지 않기 때문에 다른 프로그램이 쓰던 정보가 그대로 남아있는 경우가 많음.
5. 하드웨어의 한계
- RAM(랜덤 액세스 메모리)에서 유한한 크기의 비트만 저장하는 한계
- 부동소수점 부정확성 : float 저장 비트 수가 유한하여 일정 소수점 자리 이상 부터는 부정확한 연산 발생
- 정수 오버플로우 : int 32 비트를 넘어가는 연산 시 그 이상의 숫자를 저장할 수 없어 발생