내가 보려고 쓰는 c언어 문법(feat.정보처리기사)

KoEunseo·2022년 7월 17일
0

일상

목록 보기
2/5

C언어

프로그램 동작 과정

선언 -> 입력 -> 처리 -> 출력

컴파일러 & 인터프리터

C언어 컴파일 과정

(.c) 전처리기: 전처리구문 처리 #include<stdio.h>
(.i) 컴파일러: 고수준언어를 저수준언어로 번역
(.s) 어셈블러: 완전히 기계어로
(.EXE) 링커: 여러개의 오브젝트파일을 합치거나 라이브러리를 합치는 역할

인터프리터

한줄씩 읽어서 실행(통역), 별도 실행파일이 없다.

연산자 우선순위

최우선연산자 ( ., [], () )
단항연산자 ( ++,--,!, ...
산술연산자 ( *,/,%,+,-,shift)
시프트연산자 ( >>,<<,>>> )
비교연산자 ( >,<,>=,<=,==,!= )
비트연산자 ( &,|,,~ )
논리연산자 (&& , || , !)

비트연산자

5&3 -> 0101 & 0011 = 1; -> 둘다 1이어야 1
5|3 -> 0101 | 0011 = 0111 = 7; -> 둘중하나만 1이어도 1
5^3 -> 0101 ^ 0011 = 0110 = 6; -> 틀려야 1

시프트연산

10>>2 : 2개 밀어버림
1010 -> 10(2) = 2;
10<<2 : 2개 0붙임
1010 -> 101000

정수/정수 = 정수

1/2 = 0
7/2 = 3

출력

%d 부호있는 10진수
%f 고정소수점
%c 문자출력
%s 문자열출력
%x 16진수
%o 8진수

출력 응용

%05d, 5 -> 00005 (0으로 빈칸 채우고, 다섯개의 공간)
%5d, 5 -> 5 (' '는 공백을 뜻함. 다섯개의 공간을 만든다)
%f, 3.26 -> 3.260000 (소수점 6자리)
%6.1f, 3.26 -> 3.3(6개의 공간, 소수점 1자리, 반올림)
%-6.1f, 3.26 -> 3.3 (6개의 공간, 왼쪽부터 출력, 소숫점1자리) 
%-6.3f, 3.26 -> 3.260 (6개의 공간, 왼쪽부터 출력, 소숫점 3자리)

매크로 define

#define N 10
#define SQR(X) X*X
SQR(N) = SQR(10) = 100;
SQR(N+2) = N+2*N+2 = 10+2*10+2 = 10+20+2 = 32;
// ****** SQR(12) 아님!!! *******

구조체 struct

struct 구조체명{};
구조체에 포인터 사용시 -> 이렇게 부여함! (.대신)

static 변수

전역변수. 초기화하지 않으면 자동으로 0을 대입한다.

fork();

일반적인 if문과 다르게, fork에서는 if문을 두번 수행한다. 부모->자식 순서로!

  • 만일 wait(NULL)만나면 부모는 대기, 자식 수행 후 작동한다.

부모: 200 (어쨌든 자식보다 큰값을 줌)
자식: 0
실패시 -1

pid = fork();
if(pid<0){}
else if(pid == 0){} //자식
else { wait(NULL)} //부모

2차원배열

a[행][열]
darr[3][3]

darr = 100(첫번째행열의 주소값)
darr[0] = 100 | 1(100) | 2(101) | 3(102)
darr[1] = 103 | 4(103) | 5(104) | 6(105)
darr[2] = 106 | 7(106) | 8(107) | 9(108)

*darr = 100 //darr의 값
*darr[0] = 1
**darr = 1 //darr의 값의 값

profile
주니어 플러터 개발자의 고군분투기

0개의 댓글