반응형
문제를 풀면서 헷갈리거나 모르는 용어 정리
C 언어
- C언어 처리 순서
- 전처리기
- 컴파일러
- 어셈블러
- 링커
- 정수 간 나누기(정수)
- ex) 2/3 => 0
- ex) 2*(1/2) => 0
- 연산자 우선순위
- (++, --) > (+, -, *, /)
- 콤마연산자
- 무조건 오른쪽에 있는걸 출력
- ex) a = (10, 20) => 20
- ex) a = (10, (20, 30), 40) => 40
- 소수점 표현
- ex) a = 6.15
- printf("%3.1f", a) => 6.2
- 소수점까지 공간을 차지한다.
- ex) a = 66.66
- printf("%3.1f", a) => 66.7
- 3자리까지 표현하더라도 정수는 다 표현하고 .1f 로 인해 소수점 1번째 자리까지는 표현해야하기에
- 진법변환, 비트연산
- ex) 0x11 => 16진수 11 이기에 10진수로 변환하면 17이 된다
- 연산자 우선순위
- 증감 연산자 (++,--)
- 사칙연산 (*, /, +, -)
- 좌,우 시프트 연산자
- 비교(논리) 연산자 (<, <=, >, >=)
- 비트(AND, XOR)
- 논리(AND, OR)
- 비트 반전(~)
- ex) x = 5, y = -5
- print("%d, %d", ~x, ~y) => -6, 4
- 해당 값에서 +1 연산을 한 다음 반전시켜주기
- ex) x = 5, y = -5
- %03d
- ex) d로 전달할 값이 5의 경우
- 출력은 005가 된다.
- 0을 포함해서 총 3자리 숫자가 되도록 해야하기 때문
- 만약 %3d 라고 할 경우엔
- 5으로
- 공백공백5 로 출력을 하게 된다.
- ex) d로 전달할 값이 5의 경우
- switch
- case문으로 만약 break가 없다고 했을 때는
- case 1, case 2 와 같이 조건에 맞지 않는것이 밑에 있어도
- 조건에 만족하는 첫 case 밑의 조건부터 default까지 다 수행하게 된다.
- case문으로 만약 break가 없다고 했을 때는
- 문자열을 배열에 넣을 경우
- ex) char str[] = 'abcde'
- 약속으로 문자열 + \0 이 들어가게 된다
- 그래서 [a,b,c,d,e,\0]
- 그리고 sizeof 메서드를 사용하게 된다면 해당 요소의 타입을 확인 후 타입에 해당하는 값을 곱해줘야 한다.
- ex) char ch[5] char str[] = "abcde" int num[] = {1,2,3,4,5}
- print("%d, ", sizeof(ch))
- print("%d, ", sizeof(str))
- print("%d", sizeof(num)/sizeof(int))
- 위의 경우에 sizeof(ch)를 하게 되면 ch는 char 타입이기에 1byte가 되고 배열의 크기는 5가 되기 때문에 1*5 해서 5가 된다
- sizeof(str)의 경우엔 문자열을 배열에 넣을 때는 문자열 + null 이 들어가기에 배열의 크기가 6이 되고 char은 1byte이기에 1*6을 해서 6이 된다
- sizeof(num)/sizeof(int)를 하게 되면 num은 배열의 크기가 5가 되고 type이 int이기에 int는 4byte가 되어서 4*5로 20 이 되고 sizeof(int)는 4가 되기에 5를 출력하게 된다.
- ex) char str[] = 'abcde'
- 배열의 공간 할당
- ex) int num[5] = {1, 2, 3} 의 경우
- [1, 2, 3, , ]으로 남은 칸은 빈칸으로 들어가는 것이 아니라 **int 로 타입이 명시되어 있을 때**는 [1, 2, 3, 0, 0]으로 빈 배열의 경우엔 0을 추가해주게 되어있다.
- &, * 다시 정리
- &: ~의 주소값
- *: ~의 값
- %s 는 주소값을 받게 되는데 해당 주소값부터 null 문자 전까지 출력
- scanf("%d", k)
- scanf의 경우엔 뒤에 온 k는 주소값을 받는다고 한다
- 그래서 k의 주소값에 해당하는 값에 입력받은 값을 할당 시켜준다.
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 정보 보안 (2) (0) | 2023.07.11 |
---|---|
[정보처리기사] 정보 보안 (1) (0) | 2023.07.10 |
[정보처리기사] 네트워크 (0) | 2023.07.08 |
[정보처리기사] 운영체제 (0) | 2023.07.07 |
[정보처리기사] 데이터베이스 구축 (2) (0) | 2023.07.07 |