| 마지막 수정: 2026년 9월 14일 2026-09-14: 글 작성 |
0. 이 강의에서는 Windows 환경에서의 Visual Studio를 사용합니다.
프로젝트 생성 및 빌드 방법은 1강에서 설명하였으니 참고하시기 바랍니다.
또한 scanf 관련 전처리기나 system 등 Windows 환경 Visual Studio 환경에서만 작동하는 코드도 포함되어 있습니다.
https://solchanblog.tistory.com/80
C언어 강의 - 1. Hello World 출력하기
티스토리 블로그를 2018년에 개설했었는데 C언어 강의 카테고리를 만들어 두고 8년 넘게 아무 글도 없었다가 드디어 작성하게 되었습니다. 이번에 C언어 수강해야 하는 등 C언어에 집중해야 하는
solchanblog.tistory.com
1. 우선 정수 정의하는 방법부터 알아보겠습니다.
char, short, int, long, long long이 있으며, 범위가 다릅니다.
그리고 long와 long long의 경우 형식을 명확히 나타내기 위해 값 뒤에 각각 L, LL을 붙여야 합니다.
|
1
2
3
4
5
6
|
// 정수 정의
char a = 65; // -128 ~ 127, 출력 시 %c 또는 %d 사용 가능, %c는 문자로 출력, %d는 정수로 출력
short b = 32767; // -32768 ~ 32767, 출력 시 %d 사용
int c = 2147483647; // -2147483648 ~ 2147483647, 출력 시 %d 사용
long d = 9223372036854775807L; // -9223372036854775808 ~ 9223372036854775807, 출력 시 %ld 사용
long long e = 9223372036854775807LL; // -9223372036854775808 ~ 9223372036854775807, 출력 시 %lld 사용
|
cs |
2. 그 다음으로 실수 정의하는 방법도 알아보겠습니다.
실수는 소숫점이 있는 것으로 자릿수가 클 수록 오차가 있는 편이니 잘 사용하셔야 합니다.
일반적으로 float은 약 6자리, double은 약 14자리, long double은 약 18자리입니다.
그리고 float와 long double의 경우 형식을 명확히 나타내기 위해 값 뒤에 각각 f, L을 붙여야 합니다.
|
1
2
3
4
|
// 실수 정의
float f = 3.14f; // 1.2E-38 ~ 3.4E+38, 출력 시 %f 사용
double g = 3.14; // 2.3E-308 ~ 1.7E+308, 출력 시 %lf 사용
long double h = 3.14L; // 3.4E-4932 ~ 1.1E+4932, 출력 시 %Lf 사용
|
cs |
3. 그리고 unsigned 변수도 알아보겠습니다.
정수인데 기존에 정수는 범위가 음수부터 시작하였지만 음수를 사용할 일이 없을 경우 unsigned로 지정하여 양수로 범위를 2배 가까이 사용할 수 있습니다.
그리고 unsigned long와 unsigned long long의 경우 형식을 명확히 나타내기 위해 값 뒤에 각각 UL, ULL을 붙여야 합니다.
|
1
2
3
4
5
6
|
// unsigned 정수 정의
unsigned char i = 255; // 0 ~ 255, 출력 시 %u 사용
unsigned short j = 65535; // 0 ~ 65535, 출력 시 %u 사용
unsigned int k = 4294967295; // 0 ~ 4294967295, 출력 시 %u 사용
unsigned long l = 18446744073709551615UL; // 0 ~ 18446744073709551615, 출력 시 %lu 사용
unsigned long long m = 18446744073709551615ULL; // 0 ~ 18446744073709551615, 출력 시 %llu 사용
|
cs |
4. 마지막으로 문자열을 정의해보겠습니다.
char을 쓰는데 배열 형식으로 길이를 지정하면 문자열을 넣을 수 있습니다.
예시로 아래 코드는 20바이트 이내의 문자열을 지정 가능합니다.
|
1
2
|
// 문자열 정의
char n[20] = "Hello, World!"; // 문자열 정의, 출력 시 %s 사용
|
cs |
5. 앞에서 설명한 코드의 주석을 보시면 출력 시 %d, %c, %f 등 뭔가 사용한다 하는데 이건 printf로 출력할 때 변수와 결합하는 경우 변수의 형식을 지정할 때 사용합니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 출력
printf("char a: %c, %d\n", a, a);
printf("short b: %d\n", b);
printf("int c: %d\n", c);
printf("long d: %ld\n", d);
printf("long long e: %lld\n", e);
printf("float f: %f\n", f);
printf("double g: %lf\n", g);
printf("long double h: %Lf\n", h);
printf("unsigned char i: %u\n", i);
printf("unsigned short j: %u\n", j);
printf("unsigned int k: %u\n", k);
printf("unsigned long l: %lu\n", l);
printf("unsigned long long m: %llu\n", m);
printf("char n[20]: %s\n", n);
|
cs |
5-1. 5번 코드의 경우 실행하여 출력하면 다음과 같이 표시됩니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
char a: A, 65
short b: 32767
int c: 2147483647
long d: -1
long long e: 9223372036854775807
float f: 3.140000
double g: 3.140000
long double h: 3.140000
unsigned char i: 255
unsigned short j: 65535
unsigned int k: 4294967295
unsigned long l: 4294967295
unsigned long long m: 18446744073709551615
char n[20]: Hello, World!
|
cs |
5-2. 위에 출력된 것을 보시면 뭔가 이상하다는 것을 알 수 있습니다.
long랑 unsigned long를 지정했을 때 분명 최대값으로 했는데 각각 -1, 4294967295가 나오죠.
사실 이건 Windows 환경 Visual Studio에서 빌드한 경우 32비트 변수로 인식하여 생기는 현상으로 이것은 컴파일러에 따른 어쩔 수 없는 문제이기 때문에(gcc 등의 컴파일러에서는 정상 작동) 가급적 long long로 사용하시는 것을 권장합니다.
6. 이번에는 scanf 함수를 이용하여 값을 입력받아 보겠습니다.
입력받을 때 표시할 메시지를 printf로 출력하고(줄 바꿈 없이) 그 뒤에 바로 scanf 함수를 이용합니다.
정수를 먼저 입력해 보겠습니다.
scanf 함수 안에다가 %c 등 넣어주면 되는데 주의사항으로 char, short 형식의 경우 printf와 다르게 %d가 아닌 각각 %hhd, %hd를 입력하셔야 합니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// 정수 입력
printf("바꿀 char a 값을 입력하세요(범위는 -128 ~ 127): ");
scanf("%hhd", &a);
printf("바꿀 short b 값을 입력하세요(범위는 -32768 ~ 32767): ");
scanf("%hd", &b);
printf("바꿀 int c 값을 입력하세요(범위는 -2147483648 ~ 2147483647): ");
scanf("%d", &c);
printf("바꿀 long d 값을 입력하세요(범위는 -9223372036854775808 ~ 9223372036854775807): ");
scanf("%ld", &d);
printf("바꿀 long long e 값을 입력하세요(범위는 -9223372036854775808 ~ 9223372036854775807): ");
scanf("%lld", &e);
printf("바뀐 char a: %c, %d\n", a, a);
printf("바뀐 short b: %d\n", b);
printf("바뀐 int c: %d\n", c);
printf("바뀐 long d: %ld\n", d);
printf("바뀐 long long e: %lld\n", e);
|
cs |
7. 실수를 입력해 보겠습니다.
|
1
2
3
4
5
6
7
8
9
10
11
|
// 실수 입력
printf("바꿀 float f 값을 입력하세요(범위는 1.2E-38 ~ 3.4E+38): ");
scanf("%f", &f);
printf("바꿀 double g 값을 입력하세요(범위는 2.3E-308 ~ 1.7E+308): ");
scanf("%lf", &g);
printf("바꿀 long double h 값을 입력하세요(범위는 3.4E-4932 ~ 1.1E+4932): ");
scanf("%Lf", &h);
printf("바뀐 float f: %f\n", f);
printf("바뀐 double g: %lf\n", g);
printf("바뀐 long double h: %Lf\n", h);
|
cs |
8. unsigned 정수를 입력해 보겠습니다.
주의사항으로 unsigned short 형식의 경우 printf와 다르게 %u가 아닌 %hu를 입력하셔야 합니다.
printf에서는 char, short 둘 다 %u로 출력해도 큰 문제가 없지만 scanf에서는 명확히 %hhu, %hu로 지정해야 합니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// unsigned 정수 입력
printf("바꿀 unsigned char i 값을 입력하세요(범위는 0 ~ 255): ");
scanf("%hhu", &i);
printf("바꿀 unsigned short j 값을 입력하세요(범위는 0 ~ 65535): ");
scanf("%hu", &j);
printf("바꿀 unsigned int k 값을 입력하세요(범위는 0 ~ 4294967295): ");
scanf("%u", &k);
printf("바꿀 unsigned long l 값을 입력하세요(범위는 0 ~ 18446744073709551615): ");
scanf("%lu", &l);
printf("바꿀 unsigned long long m 값을 입력하세요(범위는 0 ~ 18446744073709551615): ");
scanf("%llu", &m);
printf("바뀐 unsigned char i: %hhu\n", i);
printf("바뀐 unsigned short j: %u\n", j);
printf("바뀐 unsigned int k: %u\n", k);
printf("바뀐 unsigned long l: %lu\n", l);
printf("바뀐 unsigned long long m: %llu\n", m);
|
cs |
9. 마지막으로 char 문자열 값도 입력받아 보겠습니다.
여기서는 기존에 쓰던 char 정수 형식의 %c가 아닌 %s를 사용합니다.
|
1
2
3
4
5
|
// 문자열 입력
printf("바꿀 char n[20] 값을 입력하세요: ");
scanf("%s", n);
printf("바뀐 char n[20]: %s\n", n);
|
cs |
10. 전체 코드입니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
// 정수 정의
char a = 65; // -128 ~ 127, 출력 시 %c 또는 %d 사용 가능, %c는 문자로 출력, %d는 정수로 출력
short b = 32767; // -32768 ~ 32767, 출력 시 %d 사용
int c = 2147483647; // -2147483648 ~ 2147483647, 출력 시 %d 사용
long d = 9223372036854775807L; // -9223372036854775808 ~ 9223372036854775807, 출력 시 %ld 사용
long long e = 9223372036854775807LL; // -9223372036854775808 ~ 9223372036854775807, 출력 시 %lld 사용
// 실수 정의
float f = 3.14f; // 1.2E-38 ~ 3.4E+38, 출력 시 %f 사용
double g = 3.14; // 2.3E-308 ~ 1.7E+308, 출력 시 %lf 사용
long double h = 3.14L; // 3.4E-4932 ~ 1.1E+4932, 출력 시 %Lf 사용
// unsigned 정수 정의
unsigned char i = 255; // 0 ~ 255, 출력 시 %u 사용
unsigned short j = 65535; // 0 ~ 65535, 출력 시 %u 사용
unsigned int k = 4294967295; // 0 ~ 4294967295, 출력 시 %u 사용
unsigned long l = 18446744073709551615UL; // 0 ~ 18446744073709551615, 출력 시 %lu 사용
unsigned long long m = 18446744073709551615ULL; // 0 ~ 18446744073709551615, 출력 시 %llu 사용
// 문자열 정의
char n[20] = "Hello, World!"; // 문자열 정의, 출력 시 %s 사용
// 출력
printf("char a: %c, %d\n", a, a);
printf("short b: %d\n", b);
printf("int c: %d\n", c);
printf("long d: %ld\n", d);
printf("long long e: %lld\n", e);
printf("float f: %f\n", f);
printf("double g: %lf\n", g);
printf("long double h: %Lf\n", h);
printf("unsigned char i: %u\n", i);
printf("unsigned short j: %u\n", j);
printf("unsigned int k: %u\n", k);
printf("unsigned long l: %lu\n", l);
printf("unsigned long long m: %llu\n", m);
printf("char n[20]: %s\n", n);
// 정수 입력
printf("바꿀 char a 값을 입력하세요(범위는 -128 ~ 127): ");
scanf("%hhd", &a);
printf("바꿀 short b 값을 입력하세요(범위는 -32768 ~ 32767): ");
scanf("%hd", &b);
printf("바꿀 int c 값을 입력하세요(범위는 -2147483648 ~ 2147483647): ");
scanf("%d", &c);
printf("바꿀 long d 값을 입력하세요(범위는 -9223372036854775808 ~ 9223372036854775807): ");
scanf("%ld", &d);
printf("바꿀 long long e 값을 입력하세요(범위는 -9223372036854775808 ~ 9223372036854775807): ");
scanf("%lld", &e);
printf("바뀐 char a: %c, %d\n", a, a);
printf("바뀐 short b: %d\n", b);
printf("바뀐 int c: %d\n", c);
printf("바뀐 long d: %ld\n", d);
printf("바뀐 long long e: %lld\n", e);
// 실수 입력
printf("바꿀 float f 값을 입력하세요(범위는 1.2E-38 ~ 3.4E+38): ");
scanf("%f", &f);
printf("바꿀 double g 값을 입력하세요(범위는 2.3E-308 ~ 1.7E+308): ");
scanf("%lf", &g);
printf("바꿀 long double h 값을 입력하세요(범위는 3.4E-4932 ~ 1.1E+4932): ");
scanf("%Lf", &h);
printf("바뀐 float f: %f\n", f);
printf("바뀐 double g: %lf\n", g);
printf("바뀐 long double h: %Lf\n", h);
// unsigned 정수 입력
printf("바꿀 unsigned char i 값을 입력하세요(범위는 0 ~ 255): ");
scanf("%hhu", &i);
printf("바꿀 unsigned short j 값을 입력하세요(범위는 0 ~ 65535): ");
scanf("%hu", &j);
printf("바꿀 unsigned int k 값을 입력하세요(범위는 0 ~ 4294967295): ");
scanf("%u", &k);
printf("바꿀 unsigned long l 값을 입력하세요(범위는 0 ~ 18446744073709551615): ");
scanf("%lu", &l);
printf("바꿀 unsigned long long m 값을 입력하세요(범위는 0 ~ 18446744073709551615): ");
scanf("%llu", &m);
printf("바뀐 unsigned char i: %hhu\n", i);
printf("바뀐 unsigned short j: %u\n", j);
printf("바뀐 unsigned int k: %u\n", k);
printf("바뀐 unsigned long l: %lu\n", l);
printf("바뀐 unsigned long long m: %llu\n", m);
// 문자열 입력
printf("바꿀 char n[20] 값을 입력하세요: ");
scanf("%s", n);
printf("바뀐 char n[20]: %s\n", n);
system("pause");
return 0;
}
|
cs |
11. 실행하여 입출력까지 모두 마친 결과입니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
char a: A, 65
short b: 32767
int c: 2147483647
long d: -1
long long e: 9223372036854775807
float f: 3.140000
double g: 3.140000
long double h: 3.140000
unsigned char i: 255
unsigned short j: 65535
unsigned int k: 4294967295
unsigned long l: 4294967295
unsigned long long m: 18446744073709551615
char n[20]: Hello, World!
바꿀 char a 값을 입력하세요(범위는 -128 ~ 127): 80
바꿀 short b 값을 입력하세요(범위는 -32768 ~ 32767): -32768
바꿀 int c 값을 입력하세요(범위는 -2147483648 ~ 2147483647): -2147483648
바꿀 long d 값을 입력하세요(범위는 -9223372036854775808 ~ 9223372036854775807): -9223372036854775808
바꿀 long long e 값을 입력하세요(범위는 -9223372036854775808 ~ 9223372036854775807): -9223372036854775808
바뀐 char a: P, 80
바뀐 short b: -32768
바뀐 int c: -2147483648
바뀐 long d: 0
바뀐 long long e: -9223372036854775808
바꿀 float f 값을 입력하세요(범위는 1.2E-38 ~ 3.4E+38): -3.14
바꿀 double g 값을 입력하세요(범위는 2.3E-308 ~ 1.7E+308): -3.141592
바꿀 long double h 값을 입력하세요(범위는 3.4E-4932 ~ 1.1E+4932): -3.1415926535
바뀐 float f: -3.140000
바뀐 double g: -3.141592
바뀐 long double h: -3.141593
바꿀 unsigned char i 값을 입력하세요(범위는 0 ~ 255): 0
바꿀 unsigned short j 값을 입력하세요(범위는 0 ~ 65535): 65534
바꿀 unsigned int k 값을 입력하세요(범위는 0 ~ 4294967295): 4294967294
바꿀 unsigned long l 값을 입력하세요(범위는 0 ~ 18446744073709551615): 18446744073709551614
바꿀 unsigned long long m 값을 입력하세요(범위는 0 ~ 18446744073709551615): 18446744073709551614
바뀐 unsigned char i: 0
바뀐 unsigned short j: 65534
바뀐 unsigned int k: 4294967294
바뀐 unsigned long l: 4294967294
바뀐 unsigned long long m: 18446744073709551614
바꿀 char n[20] 값을 입력하세요: Good_Bye!
바뀐 char n[20]: Good_Bye!
|
cs |
12. 예제 파일입니다.
추천 글
2019.02.02 - [C# 강의/콘솔 다루기] - C# 강의 - 2. int, float, bool, string 변수
C# 강의 - 2. int, float, bool, string 변수
안녕하세요. 이솔찬입니다.이번에는 C#에서 int, float, bool, string 변수를 사용해 보겠습니다. 변수 형식은 다음과 같습니다. int: 숫자 변수float: 소수점이 포함된 변수bool: 참과 거짓으로 사용되는
solchanblog.tistory.com
2022.11.28 - [C++ 강의] - C++ 강의 - 2. 변수 정하기(int, double, char, bool)
C++ 강의 - 2. 변수 정하기(int, double, char, bool)
C++ 강의 - 1. Hello World 출력하기: https://solchanblog.tistory.com/60 C++로 변수를 정해보겠습니다. 많이 사용되는 int, double, char, bool 변수를 알아볼게요. 마지막 수정: 2022년 11월 28일 2022-11-28: 글 작성 1. Visu
solchanblog.tistory.com
'C언어 강의' 카테고리의 다른 글
| C언어 강의 - 1. Hello World 출력하기 (0) | 2026.08.27 |
|---|
