오늘은 c언어 입문 마지막 시간으로 추가 개념들을 정리하는 시간을 가졌다.
먼저 우리가 자주 사용하던 특수문장 대한 내용이다
특수문자
\n : 다음줄
\t : 다음 탭, 탭문자를 사용할 때 사용 프로그램마다 4칸에서 8칸을 띄워줌
\" : 따옴표, 문자열 내에 큰따옴표를 출력하고 싶을 때 사용
\0 : 널 문자, 문자열의 끝을 알려주는 문자
그다음은 변수의 타입에 대한 내용이다.
변수의 타입
타입 | byte | 최소값 | 최대값 | 비고 |
bool | 1 | 0 | 255 | 참/거짓 |
char | 1 | -128 | 127 | 문자 |
short | 2 | -2^16 | 2^16-1 | 숫자 |
int | 4 | -2^32 | 2^32-1 | 숫자(가장 빠르게 연산) |
long | 4 | -2^32 | 2^32-1 | 숫자(64비트 = 8byte) |
long long | 8 | -2^64 | 2^64-1 | 숫자 |
float | 4 | 소수점수 | ||
double | 8 | 소수점수 | ||
unsigned | - | - | - | 0과 양수만 표현 |
파일의 처리나 미세한 메모리 조정에 필요하므로 바이트 수는 알고 있어야 한다.
부호가 없는 정수만 사용하고 싶다면 각 정수형 변수 타입 앞에 unsigned를 붙여준다.
int는 4byte이며 컴퓨터에서 가장 빠르게 연산할 수 있는 단위이다.
long은 4byte지만 다른 프로그래밍 언어에서는 8byte 또 64bit에서도 8byte이다.
unsigned는 부호가 없다는 뜻으로 선선되지 않으면 부호가 있는 숫자가 된다. 정수형에서만 가능하다.
다음으로 overflow에 대한 내용이다.
변수형에 할당될 수 있는 값의 범위를 벗어난 연산은 Overflow가 일어나게 된다.
char의 최댓값
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
char의 최솟값 +1
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
보통 맨 첫 번째 수는 0일 때 양수 1일 때 음수를 나타낸다.
그랬을 때 위의 그림은 1111111의 최댓값인 127을 나타내게 되고
아래그림은 0000000의 -128의 수를 가지게 된다
만약 01111111에서 +1을 한다면 어떻게 될까?
이진수에서 1이 더해지면서 10000000이 되고 이는 char의 최솟값인 -128이 된다.
반대로 underflow도 있다.
0
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-1 -1
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
위의 00000000에서 -1을 해주게 된다면 컴퓨터는 그 앞자리에 1이 있다고 판단하여 1 00000000 -> 0 11111111이 되게 된다.
그렇다면 앞자리가 0이므로 음수 중에 가장 큰 수인 -1이 되게 된다.
printf로 출력하기 위한 문자인 printf format string에 대한 내용이다.
타입 | 설명 |
%d | 정수형 변환 |
%c | 문자형 변환 |
%u | 부호없는 정수형 변환 |
%ld | long long 변환 |
%f | 소수점수 변환 |
%s | 문자열 변환 |
이번에는 연산자에 대한 내용이다.
연산자 | 의미1 | 의미2 | 의미3 |
+ | 덧셈 | 포인터의 주소(타입만큼) 덧셈 | |
- | 뺄셈 | 포인터의 주소(타입만큼) 뺄셈 | |
* | 곱셈 | 포인터의 실제값 | |
/ | 나눗셈 | ||
% | 나머지 | ||
() | 우선순위 지정 | 함수 호출 | |
[] | 배열 선언 | 배열 인덱스 | 포인터 인덱스 |
& | bitwise and | 변수의 주소 | |
| | bitwise or | ||
&& | 논리적 and | ||
|| | 논리적 or |
후기 : 오늘은 C언어에 대한 여러 내용을 다시 한번 복습을 하면서 추가적인 내용에 대해 공부하였다.
이제 기본적인 C언어 공부는 끝이 났고 원래라면 C++을 공부해야 할 차례지만 우선 웹페이지 개발을 위한 HTML공부를 선행하려고 한다.
*본 포스팅은 학생의 입장에서 쓴 글로 정확하지 않을 수 있으며 댓글로 피드백해 주시면 감사하겠습니다.
클래스 101 개발자 라라 님의 강의를 통해 학습한 내용을 기반으로 두고 있습니다.
'내가 꾸는 꿈' 카테고리의 다른 글
HTML의 기본 구조와 텍스트 태그 [노베이스 게임개발 23일차] (0) | 2023.04.15 |
---|---|
HTML 공부 시작! [노베이스 게임개발 22일차] (1) | 2023.04.13 |
MBTI 성격검사 만들기 [노베이스 게임개발 20일차] (0) | 2023.04.11 |
포인터#5, 매크로 [노베이스 게임개발 19일차] (0) | 2023.04.08 |
포인터#4 [노베이스 게임개발 18일차] (0) | 2023.04.06 |