โ 1. ์๋ฃํ๊ณผ ์์
(1) ์๋ฃํ์ ๊ฐ๋
[ ์๋ฃํ(data type) ์ด๋? ]
- ์ปดํจํฐ์์ ๊ฐ์ ํํ ๋ฐฉ๋ฒ์ ์ ์ํ ๊ฒ
- ์ฝ๊ฒ๋งํด, ๋ฐ์ดํฐ๊ฐ ์ด๋ค ์ข ๋ฅ์ ๊ฐ์ด๊ณ , ๋ฉ๋ชจ๋ฆฌ์์ ์ด๋ป๊ฒ ์ ์ฅ๋๊ณ ์ฒ๋ฆฌ ๋ ์ง๋ฅผ ์ ์ํ๋ ๊ท์น์ ์๋ฏธํ๋ค.
- ๊ฐ์ ์ ์ฅํ๊ฑฐ๋ ๊ณ์ฐ์ ํ ๋ ์๋ฃํ์ ์๊ฒฉํ๊ฒ ๊ตฌ๋ถํ์ฌ ์ฒ๋ฆฌํจ
(2) C ์ธ์ด ์๋ฃํ์ ์ข ๋ฅ
[ ๊ธฐ๋ณธํ (primitive types) ]
- ์ธ์ด์์ ๋ฏธ๋ฆฌ ์ ์๋์ด ์๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ ๋จ์๋ฅผ ์๋ฏธํ๋ค.
- ์ฆ, ๋ณต์กํ ๊ตฌ์กฐ ์์ด ํ๋์ ๊ฐ๋ง ์ ์ฅํ ์ ์๋ ์๋ฃํ์ด๋ค.
- ๊ธฐ๋ณธ ์๋ฃํ์๋ ์ ์ํ, ๋ฌธ์ํ, ์ค์ํ ์ธ ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
[ ์ด๊ฑฐํ (enumerated type) ]
// ๋ด๋ถ์ ์ผ๋ก ๊ฐ ์ด๋ฆ์๋ 0๋ถํฐ ์์ํ๋ ์ ์ ๊ฐ์ด ์๋ ํ ๋น ๋จ ( Sunday = 0 ... )
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
// ๊ฐ ์ง์ ์ง์ ๊ฐ๋ฅ
enum Weekday { Sunday=1, Monday, Tuesday=5, Wednesday, Thursday, Friday, Saturday };
- ๊ด๋ จ ์๋ ์์๋ค์ ์ด๋ฆ ์งํฉ์ ์ ์ํ ๋ ์ฌ์ฉํ๋ ์๋ฃํ์ด๋ค.
- ์ฝ๊ฒ๋งํด, ์ซ์ ๊ฐ์ ์ด๋ฆ์ ๋ถ์ฌ์ ์ฐ๋ ๋ฐฉ๋ฒ
[ ํ์ํ (derived types) ]
- ๊ทธ ์ธ์ ์๋ฃํ์ ํ์ํ์ผ๋ก ๋ถ๋ฆฐ๋ค.
- ๋ฐฐ์ดํ(array type)
- ๊ตฌ์กฐ์ฒดํ(structure type)
- ๊ณต์ฉ์ฒดํ(union type)
- ํฌ์ธํฐํ(pointer type)
(3) ๊ธฐ๋ณธ ์๋ฃํ์ ํฌ๊ธฐ์ ๊ฐ์ ๋ฒ์
[ ๋ฌธ์ํ๊ณผ ์ ์ํ ]
- signed, unsigned ๋ ์ ์ํ์์ ๋ถํธ(+,-)๋ฅผ ํํํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ํ๋ ํค์๋์ด๋ค.
- signed: ๋ถํธ ์๋ ์ ์๋ก ์์์ ์์ ๋ชจ๋ ํํ์ด ๊ฐ๋ฅํจ. ( ๋ํดํธ๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ. )
- unsigned: ๋ถํธ ์๋ ์ ์๋ก 0 ์ด์ ์์๋ง ํํ์ด ๊ฐ๋ฅํ๋ค. ( -๋ ์ฌ์ฉ์ด ๋ถ๊ฐ ๋์ ๋ฐ์ดํธ ๋ฒ์๊ฐ 0 ~ 255๋ก ๋์ด์ง )
- ๋ ๊ฐ์ง์ ์ฐจ์ด๋ C ์ธ์ด ์ ์ํ ๊ธฐ๋ณธ ํ์ ์ ๋ํดํธ๋ signed ๋ก, ๋ด๋ถ์์ 1๋ฐ์ดํธ๋ 8๊ฐ์ ๋นํธ๋ก ์ด๋ฃจ์ด์ ธ ์์ง๋ง ๋ฒ์๋ก๋ 7๋นํธ(-128 ~ 127) ๋ก ์ฌ์ฉ์ด ๋๋ค. ๋๋จธ์ง 1๋นํธ๋ ๋ถํธ์ฉ์ผ๋ก ์์ด๊ฒ ๋๋ ๊ฒ์ด๋ค. ํ์ง๋ง unsigned ํค์๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์์๋ฅผ ์ฌ์ฉํ์ง ์๋ ์กฐ๊ฑด์ผ๋ก 1๋นํธ๋ฅผ ์๋ก ํํ์ ํด ๊ธฐ์กด 127 ์ 255๋ก ๋๋ฆฌ๊ฒ ๋ ์ ์๋ ํค์๋์ด๋ค.
#include <stdio.h>
#include <limits.h>
int main() {
int minInt = INT_MIN;
int maxInt = INT_MAX;
printf("int ์๋ฃํ ๋ฒ์: %d ~ %d\n", minInt, maxInt);
}
- ํํํ ์ ์๋ ๊ฐ์ ๋ฒ์๋ limits.h์ ์ ์๋ ๊ฐ์ผ๋ก ํ์ธํ ์ ์์.
[ ๋ฌธ์ํ์ ์ฌ์ฉ ์์ ]
#include <stdio.h>
int main() {
char ch1;
ch1 = 'A';
printf("ch = '%c'\n", ch1);
printf("'%c'์ ASCII ์ฝ๋ = %d\n", ch1, ch1);
char ch2 = 0x42;
printf("ASCII ์ฝ๋ %d์ ๋ฌธ์ = '%c'\n", ch2, ch2);
}
// ์ถ๋ ฅ ๊ฒฐ๊ณผ
// ch = 'A'
// 'A'์ ASCII ์ฝ๋ = 65
// ASCII ์ฝ๋ 66์ ๋ฌธ์ = 'B'
- ๋ฌธ์๋ ์ ์๊ฐ์ ๊ฐ์ง๊ณ ์์คํค์ฝ๋ํ์ ๋ง๊ฒ ๋ฌธ์๋ก ํํ์ด ๋๋ค.
- ์ฆ, ๊ฒฐ๊ตญ์ ์ ์๊ฐ์ด ๋ฌธ์๋ ๋งค์นญ์ด ๋์ด์ ํํ์ด ๋๋ ๊ฒ์ด๋ค.
[ ์ค์ํ ]
- ๋ถ๋์์์ ํํ๋ฐฉ์์ ์(IEEE754 ๊ธฐ์ค) ๋ฅผ ์๋ฏธํ๋ค.
#include <stdio.h>
#include <float.h>
int main() {
double minDouble = DBL_MIN;
double maxDouble = DBL_MAX;
printf("double ์๋ฃํ ๋ฒ์: %e ~ %e\n", minDouble, maxDouble);
}
- ํํํ ์ ์๋ ์ค์ํ์ ๊ฐ์ ๋ฒ์๋ float.h ์ ์ ์๋ ๊ฐ์ผ๋ก ํ์ธํ ์ ์์.
(4) ์ด๊ฑฐํ
[ ์ด๊ฑฐํ (enumeration type) ์ด๋? ]
// ๋ด๋ถ์ ์ผ๋ก ๊ฐ ์ด๋ฆ์๋ 0๋ถํฐ ์์ํ๋ ์ ์ ๊ฐ์ด ์๋ ํ ๋น ๋จ ( Sunday = 0 ... )
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
// ๊ฐ ์ง์ ์ง์ ๊ฐ๋ฅ
enum Weekday { Sunday=1, Monday, Tuesday=5, Wednesday, Thursday, Friday, Saturday };
- ๋์ด๋ ๋จ์ด๋ฅผ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ ์๋ฃํ์ด๋ค
- ๋์ด๋ ์์๋๋ก 0๋ถํฐ ์์ํ๋ ์ ์๋ฅผ ํํํจ
- ๊ด๋ จ ์๋ ์์๋ค์ ์ด๋ฆ ์งํฉ์ ์ ์ํ ๋ ์ฌ์ฉํ๋ ์๋ฃํ์ด๋ค.
- ์ฝ๊ฒ๋งํด, ์ซ์ ๊ฐ์ ์ด๋ฆ์ ๋ถ์ฌ์ ์ฐ๋ ๋ฐฉ๋ฒ
- ์ฆ, ๊ด๋ จ ์๋ ์์๋ค์ ์งํฉ์ ํํํ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค.
- ์๋ฐ์๋ ๋ค๋ฅด๊ฒ ์ ์ ์์ ์งํฉ์ ๋ง๋๋ ๋ฌธ๋ฒ์ด๋ผ ๋ฌธ์์ด์ ๋ฃ์ ์ ์์ผ๋ฉฐ, ์ ์๋ง ๊ฐ๋ฅํจ.
#include <stdio.h>
int main() {
enum day {SUN, MON, TUE, WED, THU, FRI, SAT};
enum fruit {APPLE, PEAR, MANGO=4, GRAPE};
printf("TUE์ ๊ฐ = %d\n", TUE);
printf("PEAR์ ๊ฐ = %d\n", PEAR);
printf("GRAPE์ ๊ฐ = %d\n", GRAPE);
}
// ๊ฒฐ๊ณผ๊ฐ
// TUE์ ๊ฐ = 2
// PEAR์ ๊ฐ = 1
// GRAPE์ ๊ฐ = 5
- ์ด๋ ๊ฒ ์ถ๋ ฅ์ํ๊ฒ ๋๋ฉด, ์ ์๊ฐ์ด ์ถ๋ ฅ์ด ๋๋๊ฒ์ ๋ณผ ์ ์์.
(5) ์์
[ ์์๋? ]
- ํญ์ ๊ณ ์ ๋ ๊ฐ์ ๊ฐ๋ ์๋ฃ๋ฅผ ์๋ฏธํ๋ค.
- C ์ธ์ด์ ์์ ํํ์ ์๋ฃํ์ ๋ฐ๋ผ ์ ํด์ง ๋ฌธ๋ฒ์ ๋ฐ๋ผ ๊ฐ์ ํ๊ธฐํ๋ค.
- ์์(constant) ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ literal ์์ฒด๋ ์์๋ผ๊ณ ํ ์ ์๊ณ , const ํค์๋๋ #define ๋ฑ์ผ๋ก ๋ง๋ ์์๋ ํฌํจ
[ ์ ์ํ ์์ ]
- 10์ง์, 8์ง์, 16์ง์๋ก ํํ ๊ฐ๋ฅ
#include <stdio.h>
int main() {
// 10์ง์ ์ ์ ์์
const int a = 10; // 10
// 8์ง์ ์ ์ ์์ (์์ 0)
const int b = 012; // 10์ง์๋ก 10
// 16์ง์ ์ ์ ์์ (์์ 0x)
const int c = 0xA; // 10์ง์๋ก 10
// ๋ถํธ ์๋ ์ ์ ์์
const unsigned int d = 100u;
// long long ์ ์ ์์
const long long e = 123456789LL;
}
- const ํค์๋๋ฅผ ํตํด์ ์์๋ฅผ ํํ ํ ์ ์์. ํด๋น ๋ถ๋ถ์ ์ ์ํ ์์์.
[ ์ค์ํ ์์ ]
- ๋ถ๋์์์ ํ ์์
- double ํ์ด ๊ธฐ๋ณธ ์๋ฃํ์
#include <stdio.h>
int main(void) {
// doubleํ ์ค์ ์์ (๊ธฐ๋ณธ)
const double a = 3.14159;
// floatํ ์ค์ ์์ (์ ๋ฏธ์ฌ f/F)
const float b = 3.14f;
// long doubleํ ์ค์ ์์ (์ ๋ฏธ์ฌ l/L)
const long double c = 1.23e4L; // 1.23 * 10^4
// ์ง์ ํ๊ธฐ๋ฒ
const double d = 2.5e3; // 2.5 * 10^3 = 2500.0
}
- ์ค์ํ ๋ํ const ํค์๋๋ฅผ ํตํด ์์ ํํ๋ ๊ฐ๋ฅํ๋ฉฐ, ๋ค์ํ ํ๊ธฐ ๋ฐฉ๋ฒ์ด ์กด์ฌํจ.
- ํด๋น ์ง์ ํ๊ธฐ๋ฒ์ e ๋ 10์ ์๋ฏธํ๋ฉฐ 3์ ์ง์ ๊ฐ์ ์๋ฏธํจ.
[ ๋ฌธ์ํ ์์ ]
- ์์๋ฐ์ดํ๋ก ๋ฌถ์ฌ ์๋ 1๊ฐ์ ๋ฌธ์๋ฅผ ์๋ฏธํจ.
- ์๋ฌธ์: 'a' ~ 'z', 'A' ~ 'Z'
- ์ซ์: '0' ~ '9'
- ๊ธฐํธ: '+' , '-', '@', '#' ๋ฑ
- ๋ฐฑ์๋ฌธ์: ๋ณด์ด์ง๋ ์์ง๋ง ํ ํฐ์ ๊ตฌ๋ถํด์ฃผ๋ ์ญํ ์ ํ๋ ๋ฌธ์์ ( ' ', '\t', '\n', '\r', '\f' ๋ฑ )
- ๋(null) ๋ฌธ์('\0')
- ๋ฌธ์ํ ์์๋ ๋ด๋ถ์ ์ผ๋ก๋ ํด๋น ๋ฌธ์์ ASCII ์ฝ๋๊ฐ์ ์ ์ฅํ๋ค.
[ ๋ฌธ์์ด ์์ ]
- ํฐ๋ฐ์ดํ(" ")๋ก ๋ฌถ์ฌ ์๋ ์ผ๋ จ์ ๋ฌธ์๋ฅผ ์๋ฏธํ๋ค.
- ๋ฌธ์์ด์ ๋์ ๋ํ๋ด๊ธฐ ์ํ C์ ๋ฌธ์์ด ๋ง์ง๋ง์๋ ๋ ๋ฌธ์('\0)๊ฐ ์๋์ผ๋ก ์ถ๊ฐ๋จ
[ ์ ๋ฆฌ ]
- ์ฌ๊ธฐ์ ๋ณด์ฌ์ค ์์๋ค์ ๋ฆฌํฐ๋ด ์์๋ฅผ ์๋ฏธํจ. ๊ฐ ์์ฒด๊ฐ ์์
- ๋ณ์์ const๋ฅผ ํตํด ์์๋ก ๋ง๋ค๋ฉด ๋ณ์ ์์ฒด๊ฐ ๋ถ๋ณ์ด ๋๋ ์์๊ฐ ๋จ.
- ์ฆ, const ๋ ๋ณ์๋ฅผ ์์๋ก ๋ง๋ค์ด์ฃผ๊ณ ๋ฆฌํฐ๋ด ๊ฐ ์์ฒด ๋ํ ์์๋ก ๋ณผ ์ ์์.
โ 2. ๋ณ์
(1) ๋ณ์(variables) ์ ์ ๋ฐ ํน์ง
[ ๋ณ์๋ ]
#include <stdio.h>
int main() {
// ์ ์ํ ๋ณ์
int age = 25;
int year; // ์ ์ธ๋ง ํ๊ณ ์ด๊ธฐํ๋ ๋์ค์
year = 2025; // ๋์ค์ ๊ฐ ๋์
// ์ค์ํ ๋ณ์
float pi = 3.14f;
double e = 2.71828;
// ๋ฌธ์ํ ๋ณ์
char grade = 'A';
// ์ฌ๋ฌ ๋ณ์ ๋์์ ์ ์ธ
int x = 10, y = 20, z;
// ๋ณ์ ๊ฐ ๋ณ๊ฒฝ
x = 15;
grade = 'B';
}
- ํ๋ก๊ทธ๋จ์์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๊ธฐ์ต๊ณต๊ฐ์ ์๋ฏธํจ.
- ํ๋ก๊ทธ๋จ ์คํ ๋์ค ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์
- ๋ชจ๋ ๋ณ์๋ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์ ์ธ์ด ๋์ด์ผ ํ๋ค.
- C ์์๋ ์ฌ๋ฌ ๋ณ์๋ฅผ ๋์์ ์ ์ธ์ด ๊ฐ๋ฅํจ
[ ๋ณ์์ ํน์ง ]
- ๋ชจ๋ ๋ณ์๋ ๋ณ์๋ช ์ด๋ผ๋ ์ด๋ฆ์ด ์กด์ฌํจ
- ๋ชจ๋ ๋ณ์๋ ์ ํด์ง ์๋ฃํ์ด ์์.
- ๋ชจ๋ ๋ณ์๋ ํ ๋น๋ ๊ฐ์ ๊ฐ๊ณ ์๋ค.
(2) ๋ณ์ ์ ์ธ ์ ๊ณ ๋ คํด์ผ ํ ์ฌํญ
- ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ํฌ๊ธฐ ์ฆ, ์๋ฃํ์ ๋ง๋ ๋ฐ์ดํธ ํฌ๊ธฐ๋ฅผ ์๊ฐํด์ผ ํจ.
- ๋ณ์์ ์ ์ธ ์์น: ํจ์ ์ ๋๋ ๋ฐ์์ ์ ์ธํ ์ ์์ผ๋ฉฐ, ์ด๋์ ์ ์ธํจ์ ๋ฐ๋ผ์ ์ฌ์ฉ ์ฉ๋๊ฐ ๋ฌ๋ผ์ง๋ค.
- ๋ณ์์ ์ด๊ธฐํ: ๋ณ์ ์ด๊ธฐํ๋ ์๋ฏธ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค. ์ด๊ธฐํ ๊ณ ๋ ค
[ ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ]
- ์ค๋ฒํ๋ก(overflow): ์๋ฃํ์ด ํํํ ์ ์๋ ๊ฐ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
- ์ธ๋ํ๋ก(underflow): ์ค์ํ ๋ณ์๊ฐ ํํํ ์ ์๋ ๊ฐ์ฅ ์์ ์์๋ณด๋ค ๋ ์์ ๊ฐ์ด ๋์ด 0์ผ๋ก ์ฒ๋ฆฌ๋๋ ํ์์. ์ปต์ ๋จ์ ๋ฌผ์ด ๋๋ฌด ์ ์ด 0์ผ๋ก ์ทจ๊ธ๋๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค.
[ ๋ณ์์ ์ ์ธ ์์น ]
- ์ ์ญ๋ณ์: ํจ์ ์ธ๋ถ์ ์ ์ธ ๋ ๋ณ์๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ชจ๋ ํจ์์์ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
- ์ง์ญ๋ณ์: ํจ์ ๋ด๋ถ์ ์ ์ธ ๋ ๋ณ์๋ฅผ ์๋ฏธํ๋ฉฐ, ํด๋น ํจ์ ๋ด๋ถ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํจ.
โ 3. ์ ํ์ฒ๋ฆฌ๊ธฐ
(1) ์ ํ์ฒ๋ฆฌ(preprocessing) ๋?
- ์ปดํ์ผ์ ์์ ์์ค ํ๋ก๊ทธ๋จ์ ๊ฐ๊ณตํ์ฌ ์ปดํ์ผ๋ฌ๊ฐ ์ค์ ๋ก ๋ฒ์ญํ ์์ค ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ
- ์ฆ, C์ ์ ํ์ฒ๋ฆฌ๊ธฐ๋ ์ปดํ์ผ ๊ณผ์ ์ด์ ์ ์์ค ์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ๊ณตํ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
- ์ฝ๊ฒ๋งํด, ์ ํ์ฒ๋ฆฌ๋ ์ปดํ์ผ ์ ์ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌ๋๋ ๋ช ๋ น์ ์๋ฏธํ๋ค.
- ์ ํ์ฒ๋ฆฌ ์ง์์ด๋ก ์ง์ํ๋ฉฐ, ์ ํ์ฒ๋ฆฌ ์ง์์ด๋ '#' ์ผ๋ก ์์ํ๋ค.
- ์ ํ์ฒ๋ฆฌ ์ง์์ด ๋ฌธ์ฅ์ ํ ํ์ ํ ๊ฐ์ ๋ฌธ์ฅ์ ์์ฑํ ์ ์์ผ๋ฉฐ, ๋ฌธ์ฅ์ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ์ฌ์ฉํ์ง ์๋๋ค.
[ ๋ํ์ ์ธ ์ ํ์ฒ๋ฆฌ ]
- ํค๋ํ์ผ ํฌํจ: #include
- ๋งคํฌ๋ก ์ ์ธ ๋ฐ ํด์ : #define, #undef
- ์กฐ๊ฑด๋ถ ์ปดํ์ผ: #if, #else, #elif, #endif
(2) #include ์ง์์ด - ํค๋ํ์ผ ํฌํจ
- ์ปดํ์ผ๋ฌ๊ฐ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ธฐ ์ ์, ์ง์ ๋ ํ์ผ์ ์ ์ฒด ๋ด์ฉ์ ํ์ฌ ํ์ผ์ ํด๋น ์์น์ ๋ณต์ฌํด๋ฃ๋ ์ญํ ์ ํจ.
- ์ง์ ๋ ํ์ผ์ ํค๋ํ์ผ ์ด๋ผ๊ณ ํ๋ฉฐ ํด๋น ํ์ผ์ ๊ฐ์ ธ์ #include ์ง์์ด ๋ถ๋ถ์ ๋ถํ ๋ฃ๊ฒ๋จ.
- ์ฆ, ๊ฐ์ฅ ์๋จ์ ๋ฐฐ์น๊ฐ ๋ ์ ์๊ฒ ๋จ.
// ํ์ค ๋๋ ํ ๋ฆฌ์์ ํ์ผ์ ์ฐพ์
#include <ํ์ผ๋ช
>
// ํ์ฌ ์ฌ์ฉ ์ค์ธ ๋๋ ํ ๋ฆฌ, ๋๋ ์ง์ ์ง์ ํ ๊ฒฝ๋ก์์ ํ์ผ์ ์ฐพ์
#include "ํ์ผ๋ช
" // #include "aaa/aaa.h
- C์์๋ ํ์ค ๋๋ ํ ๋ฆฌ๋ฅผ ์ ํด๋์๊ธฐ ๋๋ฌธ์ ํด๋น ํด๋์ ํ์ผ์ ๋ฃ๊ฒ๋๋ฉด ์ฐพ์์ ๊ฐ์ ธ์ค๋๊ฒ ๊ฐ๋ฅํจ.
(3) ๋งคํฌ๋ก ์ ์
[ ๋งคํฌ๋ก(macro) ๋? ]
- ํน์ ์ฝ๋ ํจํด์ผ๋ก ์นํ๋๋๋ก ์ ์๋ ๋ช ์นญ์ ์๋ฏธํ๋ค.
- '#define' ์ง์์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฃผ ์ฌ์ฉ๋๋ ๋ช ๋ น์ด๋ ์์ ๋๋ ์์์ ์ด๋ฅผ ๋ํํ๋ ์ด๋ฆ(๋งคํฌ๋ก ์ด๋ฆ)์ ๋ถ์ฌ ์ฌ์ฉํจ.
- ๊ฒฐ๋ก ์ ์ปดํ์ผ์ ์ฝ์๋ ์ด๋ฆ์ธ ๋งคํฌ๋ก๋ฅผ ์ค์ ์ฝ๋๋ ๊ฐ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด๋ฉฐ, ์ด๊ฒ์ ์ปดํ์ผ ์ ์์ ์ ์๋ ํจ์ ์ ์๋ก ๋ณผ ์ ์์ง๋ง, ์์๋ก #define Max_SIZE 100 ์ด๋ผ๊ณ define ์ง์์ด๋ฅผ ์ด์ฉํ๊ฒ ๋ ๋ ์ปดํ์ผ๋ฌ๊ฐ ์์ค ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ ์ ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ๋จผ์ ์๋ํ์ฌ ์ฝ์๋ ์ด๋ฆ์ ์ค์ ์ฝ๋๋ก ๊ต์ฒดํ๋ ์์ ์ ํด์ฃผ๊ฒ ๋๋ค. ์ด ์์ ์ ์์ค ์ฝ๋์ ์๋ ๋ชจ๋ MAX_SIZE ๋ฅผ ์ฐพ์ 100์ผ๋ก ๋ฐ๊พธ๋ ์์ ์ด๋ค.
- ์ฆ, ์ปดํ์ผ ๋ ์๋ณธ ๋ฌธ์์ธ ์ํฌ ์ฝ๋๋ฅผ ์ปดํ์ผ ์ ์ ์์ ํ์ฌ ์ปดํ์ผ๋ฌ๊ฐ ๋ ํจ์จ์ ์ด๊ณ ์์ ํ๊ฒ ์ปดํ์ผ ํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ์ด๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋งคํฌ๋ก๋ ์์ ํํ์ ๋งคํฌ๋ก, ํจ์ ํํ์ ๋งคํฌ๋ก ์ด ๋ ๊ฐ์ง๋ก ๋๋ ์ง๋ค.
[ ๋งคํฌ๋ก ์์ ์ ์ ]
#include <stdio.h>
// ์์ ๋งคํฌ๋ก ์ ์
#define MAX_NUM 100
int main() {
int score = 85;
// ์ ์๋ ๋งคํฌ๋ก ์ฌ์ฉ
if (score < MAX_NUM) {
printf("์ ์๊ฐ ์ต๊ณ ์ ์(%d)๋ณด๋ค ๋ฎ์ต๋๋ค.\n", MAX_NUM);
}
return 0;
}
- ์ปดํ์ผ์ ์ ํด๋น ๋งคํฌ๋ก ์์๋ก ์ ์๋ MAX_NUM ์ ๊ฐ์ ๋ชจ๋ 100์ผ๋ก ์นํ์ ํด์ค๋ค.
- [ #undef ๋งคํฌ๋ก๋ช ] ์ ํตํด์ ๋งคํฌ๋ก ์์๋ฅผ ํด์ ํ ์ ์์.
[ ๋งคํฌ๋ก ํจ์ ์ ์ ]
#include <stdio.h>
// ํจ์ ๋งคํฌ๋ก ์ ์: #define ๋งคํฌ๋ก๋ช
(์ธ์ค๋ฆฌ์คํธ) (์์)
#define C_AREA(X) (3.141592 * (X) * (X))
int main() {
double r = 5.0;
printf(%lf\n", C_AREA(r + 5));
// ๋ด๋ถ์ ์ผ๋ก ์ด๋ฐ์์ผ๋ก ์นํํด์ ์ด์ฉ์ด๋จ.
//printf("%lf\n", (3.141592 * (r + 5) * (r + 5)));
}
- ์ธ์ค๋ฆฌ์คํธ: 1๊ฐ ์ด์์ ์ธ์ ์ง์ ๊ฐ๋ฅ
- ๋งคํฌ๋ก ํ์ฅ: ์ธ์๋ฅผ ์์์ ๋ฐ์ํ์ฌ ๋งคํฌ๋ก๋ช ์ ์นํํ๋ค.
- ์ฃผ์: ๋งคํฌ๋ก๋ช ์ด ์์์ ํ ์คํธ๋ก ์นํ๋๋ ๊ฒ์ด๋ฏ๋ก ์ ์ ํ ๊ดํธ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์
- ์์ ์ฝ๋์ ๊ฐ์ด ๋งคํฌ๋ก ํจ์ ์ฌ์ฉํ๋ ๊ณณ์ด ์ปดํ์ผ ์ ์ ํด๋น ๋งคํฌ๋ก ํจ์์ ์์์ผ๋ก ์นํ์ด ๋๊ธฐ ๋๋ฌธ์, ํจ์ ๊ฐ์ผ๋ก ๋ง์ฝ ์์์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด, ๊ดํธ๊ฐ ํ์ํด์ง๊ฒ ๋จ. ์ฆ, ๊ฐ์ด ์ด๋ค์์ผ๋ก ๊ฐ์ด ๋ค์ด์ฌ์ง ๋ชฐ๋ผ์ ๊ดํธ๋ฅผ ์ ์ ํ ์ฌ์ฉ์ ํด์ค์ผํจ.
(4) ์กฐ๊ฑด๋ถ ์ปดํ์ผ
[ ์กฐ๊ฑด๋ถ ์ปดํ์ผ์ด๋? ]
- ์กฐ๊ฑด์ ๋ฐ๋ผ ์ปดํ์ผํ ์ฝ๋๋ฅผ ์ ํํ ์ ์๊ฒ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์ฝ๊ฒ๋งํด, ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ผ๋ถ ์ฝ๋๋ฅผ ํฌํจํ๊ฑฐ๋ ์ ์ธํ๋ ๊ธฐ๋ฅ์ ์๋ฏธํ๋ค.
- ์ฆ, ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ธ ๊ฒฝ์ฐ ์ปดํ์ผ๋ ์์ค์ฝ๋์ ์กฐ๊ฑด๋ฌธ์ ๋ฌธ์ฅ์ด ํฌํจ์ด ๋๊ฒ ํ ์ ์๋๊ฒ์ด๋ค.
- ์ฃผ์: ์กฐ๊ฑด๋ฌธ์ ์ ํ์ฒ๋ฆฌ๊ณผ์ ์์ ์ง์ ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ณ์ ์ง์ ์ด๋ ํจ์ ํธ์ถ์ด ๋ถ๊ฐ๋ฅํจ.
- ์กฐ๊ฑด๋ถ ์ปดํ์ผ์ ์กฐ๊ฑด์ผ๋ก ์์ด๋ ๊ฐ ์์ฒด๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๋งคํฌ๋ก ๊ธฐ๋ฅ์ ๋ฐ๋์ ํ์ฉ์ ํ๊ฒ ๋๋ค.
[ ์กฐ๊ฑด๋ถ ์ปดํ์ผ ํ์ฉ ์ ]
#include <stdio.h>
#define DEBUG_MODE 1 // 1์ ์ฐธ์ผ๋ก๋ ์์
int main() {
int a = 10, b = 20;
#if DEBUG_MODE
printf("ํ๊ท ์ ๊ตฌํ ๊ฐ: %d, %d\n", a, b);
#endif
printf("ํ๊ท = %f\n", (a + b)/2.0);
}
// ์กฐ๊ฑด์ ๋ง๊ฒ ๋ ๊ฒฝ์ฐ ํด๋น ์ฝ๋๋ก ์ปดํ์ผ์ด ์งํ ๋จ.
int main() {
int a = 10, b = 20;
printf("ํ๊ท ์ ๊ตฌํ ๊ฐ: %d, %d\n", a, b);
printf("ํ๊ท = %f\n", (a + b)/2.0);
}
- ์กฐ๊ฑด์ ๋ง์ ๊ฒฝ์ฐ ํด๋น ์กฐ๊ฑด์ ๋ง๋ ์ฝ๋๋ก ์นํ์ด ๋๋ฉฐ, ํด๋น ์ฝ๋๊ฐ ์ดํ์ ์ปดํ์ผ์ด ๋๊ฒ ๋จ.
'๐ ๏ธBackend > โ๏ธC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C] C ์ธ์ด์ ๊ฐ์ (1) | 2025.08.18 |
---|