이 글은 아래의 페이지를 공부하며 작성한 글 입니다.
https://dojang.io/mod/page/view.php?id=9
C언어의 특징
- C언어의 구성은 모든 실행들이 함수를 호출하고 return 형식으로 구성되어 있다.
- 함수들의 집합체이다.
- 문장이 간결하다.
- 대,소문자 구분된다.
- 예약어는 기본적으로 소문자이다.
- 메모리의 주소를 자유롭게 조작할 수 있다.
- 주기억장치의 주소까지 조작할 수 있는 연산자를 가지고 있다. - 포인터
- main함수부터 실행되며, main함수가 없으면 컴파일이 되지 않는다.
.c
확장자를 지닌 소스파일은 .obj
를 거쳐 .exe
파일로 생성된다.
Hello World! 출력하기
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
#include
: 헤더파일을 포함하는 문법.
- printf를 사용하려면 stdio.h 헤더파일이 필요하다.
서식지정자
#include <stdio.h>
int main()
{
printf("%s\n", "Hello, world!");
printf("%s %s\n", "Hello", "1234"); // Hello 1234
printf("%s %s\n", "Hello,", "1234"); // Hello, 1234
printf("%s, %s\n", "Hello", "1234"); // Hello, 1234
printf("%s, %s\n", "Hello,", "1234"); // Hello,, 1234
printf("%s%s\n", "Hello", "1234"); // Hello1234
return 0;
}
- 그냥 출력하는 것과는 결과에 차이가 없으나 변수를 사용하여 같은 내용을 여러개 출력하거나, 출력 형태를 바꿀 때 유용하다.
%s
: 문자열(string)의 약어로, s를 사용
%d
: 정수
중괄호{ }
- 코드의 범위를 나타냄.
- if, for등의 키워드가 영향을 미치는 영역을 정할 때도 사용
- struct(구조체,공용체, 열거형)를 정의할 때도 사용.
들여쓰기
- 안해도 컴파일 에러는 발생하지 않지만, 코드의 가독성을 높이기 위해 사용.
변수만들기
변수 명명규칙
- 영문, 숫자를 사용할 수 있다.
- 대소문자를 구분
- 문자부터 시작해야한다.
- _(밑줄문자)로 시작할 수 있다.
- 키워드는 사용할 수 없다.
정수
- char, int가 있고 부호키워드(signed, unsigned)와 크기(long, short)를 붙여 특성 정의
- signed : 부호있는 정수 ( 생략 )
- unsigned : 부호없는 정수 0부터 시작
정수형 변수 선언
1. 부호없는 자료형
#include <stdio.h>
int main()
{
char num1 = -10; // 1바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
short num2 = 30000; // 2바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
int num3 = -1234567890; // 4바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
long num4 = 1234567890; // 4바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
long long num5 = -1234567890123456789; // 8바이트 부호 있는 정수형으로 변수를
// 선언하고 값 할당
// char, short, int는 %d로 출력하고 long은 %ld, long long은 %lld로 출력
printf("%d %d %d %ld %lld\n", num1, num2, num3, num4, num5);
// -10 30000 -1234567890 1234567890 -1234567890123456789
return 0;
}
- %d : 10진수 (decimal)
- %ld : long decimal
- %lld : long long decimal
2. 부호있는 자료형
#include <stdio.h>
int main()
{
unsigned char num1 = 200; // 1바이트 부호 없는 정수형으로
// 변수를 선언하고 값 할당
unsigned short num2 = 60000; // 2바이트 부호 없는 정수형으로
// 변수를 선언하고 값 할당
unsigned int num3 = 4123456789; // 4바이트 부호 없는 정수형으로
// 변수를 선언하고 값 할당
unsigned long num4 = 4123456789; // 4바이트 부호 없는 정수형으로
// 변수를 선언하고 값 할당
unsigned long long num5 = 12345678901234567890; // 8바이트 부호 없는 정수형으로
// 변수를 선언하고 값 할당
// unsigned char, unsigned short, unsigned int는 %u로 출력하고
// unsigned long은 %lu, unsigned long long은 %llu로 출력
printf("%u %u %u %lu %llu\n", num1, num2, num3, num4, num5);
// 200 60000 4123456789 4123456789 12345678901234567890
return 0;
}
- %u : 부호없는 10진수(unsigned decimal)
- %lu : long unsigned decimal
- %llu : long long unsigned decimal