โ 1. C ์ธ์ด์ ํ๋ฆ ์ ์ด
(1) C ์ธ์ด์ ๊ธฐ๋ณธ - ๋ฌธ์ฅ ํ๋ฆ
[ ๋ฌธ์ฅ(statement) ]
- ์ ์ธ์ด๋ ์คํ์ ์ง์ํ๋ ํํ์ ๊ธฐ๋ณธ ๋จ์
- ์ ์ธ๋ฌธ: ์๋ฃํ, ๋ณ์ ๋ฑ์ ์ ์ธํ๋ ๋ฌธ์ฅ์ด๋ค. ์: int a;
- ์คํ๋ฌธ: ๋์์ ์ํํ๋๋ก ์ง์ํ๋ ๋ฌธ์ฅ์ด๋ค. ์: a += 10;
- ์คํ๋ฌธ์ ํจ์ ์์๋ง ์์ฑํ ์ ์์.
- ๋ชจ๋ ๋ฌธ์ฅ์ ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๋์ ํ์ํจ
- ์คํ๋ฌธ์ ๋์ด๋ ์์์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ์คํ๋จ
- ํ๋ฆ ์ ์ด๋ฌธ์ ์ํด ์์ฐจ์ ํ๋ฆ์ ๋ฐ๊ฟ ์ ์์.
(1) C ์ธ์ด์ ๊ธฐ๋ณธ - ํ๋ฆ ์ ์ด ๊ตฌ์กฐ
- ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ์์ฐจ๊ตฌ์กฐ, ์ ํ๊ตฌ์กฐ, ๋ฐ๋ณต๊ตฌ์กฐ ์ด๋ค.
- ์ด ์ธ๊ฐ์ง๊ฐ ๋ํ์ ์ผ๋ก ์ฐ์ด๋ ํ๋ฆ ์ ์ด ๊ตฌ์กฐ์ด๋ค.
โ 2. ์ ํ ์ ์ด๋ฌธ
(1) ์ ํ ์ ์ด๋ฌธ์ด๋?
- ์ง์ ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ํน์ ์์น๋ก ์ด๋ํ์ฌ ์คํํ๋ ๋ถ๊ธฐ ์ ์ด ๊ตฌ์กฐ๋ฅผ ์๋ฏธํจ.
(2) ์ ํ ์ ์ด๋ฌธ์ ์ข ๋ฅ
- ๋ํ์ ์ผ๋ก๋ if ๋ฌธ, switch ๋ฌธ์ด ์์.
(3) if ๋ฌธ
- ์กฐ๊ฑด์์ ์ฐธ / ๊ฑฐ์ง์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ์ ์คํ๋๋ ์ฝ๋๋ฅผ ๋ฌ๋ผ์ง๊ฒ ๋ง๋ค ์ ์์.
- statement ์ ๋ค์์ ๋ฌธ์ฅ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ๋ธ๋ก์ผ๋ก ์์ฑ ํ ์ ์์. ( {} )
[ ๋ธ๋ก ]
- ํ ๊ฐ ์ด์์ ๋ฌธ์ฅ์ ์ค๊ดํธ {}๋ก ๋ฌถ์ด ๋์ ํ๋์ ๋ฌธ์ฅ์ฒ๋ผ ์ทจ๊ธํ ์ ์๊ฒ ํ ๊ฒ
- ์ง์ญ๋ณ์๋ฅผ ํฌํจํ ์ ์์
- '}'๋ก ๋ธ๋ก์ ๋์ ํ์ํ๋ฏ๋ก ';' ์ผ๋ก ๋๋ง์น ํ์ ์์
[ C์ธ์ด - if ์์ ]
(4) if ~ else ๋ฌธ
- ์กฐ๊ฑด์์ false ์ธ ๊ฒฝ์ฐ else ๋ธ๋ก์ ์ฝ๋๊ฐ ์ํ์ด ๋๋ค.
[ C์ธ์ด - if ~ else ์์ ]
(5) else if ๋ฌธ
- ๋จ์ else ๋ if ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ else ์ฝ๋๊ฐ ์คํ์ด ๋๋ค.
- ํ์ง๋ง, else if ๋ฌธ์ if ์ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ else if ์ ์กฐ๊ฑด์์ ๋ณด๊ฒ๋๊ณ , ์กฐ๊ฑด์์ ๋ง์ผ๋ฉด else if ๋ธ๋ก์ด ์คํ์ด ๋จ.
- ์ฆ, ๊ฑฐ์ง์ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ์คํ๋๋๊ฒ์ else ๋ฌธ์ด๊ณ ๋ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋ด๊ฑฐ๋๊ฑด else if ๋ก ๋ณผ ์ ์์.
(6) switch ๋ฌธ
- switch ๋ฌธ์ ์ง์ ๋ ์์ ๊ฐ์ ๋ฐ๋ผ ์คํํ ๋ฌธ์ฅ์ ์ ํํ ์ ์๊ฒ ํจ.
- ์ฆ, switch ๋ฌธ์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ฉด, case ๋ฌธ๊ณผ ๋์ผํ ๊ฐ์ ์กฐ๊ฑด์์ ์ํํจ.
- ๋งค๊ฐ๋ณ์์ ๊ฐ์๋ ์ ์ ์ ํ์ ์๋ง ๋ค์ด๊ฐ ์ ์์.
- label ์๋ ๋ฐ๋์ ์์๊ฐ ๋ค์ด๊ฐ์ผ ํ๋ค.
- default: ๋ชจ๋ case ์ ์กฐ๊ฑด์ ๋ถํฉํ๋ค๋ฉด default ์ ์กฐ๊ฑด์์ ์ํํ๊ฒ ๋จ.
- break: ํด๋น ์กฐ๊ฑด์์ด ์ํ์ด ๋๊ณ ๋ค์ case ๋ฅผ ํ์ธ์ ํ๊ฒ ๋๋๋ฐ, ์ด๋ ๋ค์ case ๋ฅผ ์๋ณด๊ณ ์ข ๋ฃํ๊ธฐ ์ํด break ๋ฅผ ์.
[ C์ธ์ด - switch ์์ ]
- break ๋ฌธ์ด ์๊ธฐ ๋๋ฌธ์, ๋ค์์ ๋์ฌ case ๋ค์ ๋ชจ๋ ์ถ๋ ฅ์ ํ๊ฒ ๋จ.
[ C์ธ์ด - switch break ์์ ]
- break ๋ฌธ์ ํตํด ๋ค์์ ๋์ฌ case ๋ค์ ์ถ๋ ฅ์ ๋ง๊ณ ํด๋น case ๊ฐ ๋๋ ๋ break ๋ก ๋๊ฐ๊ฒ ๋จ.
โ 3. ๋ฐ๋ณต ์ ์ด๋ฌธ
(1) ๋ฐ๋ณต ์ ์ด๋ฌธ(loop, ๋ฃจํ)์ ์ฉ๋
- ์ ํด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ๋์ผํ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์คํ์ ํด์ค๋ค.
(2) ๋ฐ๋ณต ์ ์ด๋ฌธ์ ์ ํ
- for ๋ฃจํ, while ๋ฃจํ, do-while ๋ฃจํ ์ธ ๊ฐ์ง์ ๋ฐ๋ณต ์ ์ด๋ฌธ์ด ์์.
(3) for ๋ฌธ
- ๋ฐ๋ณต ํ์๊ฐ ๋ช ํํ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉ์ด ๋๋ฉฐ, ๋ฐ๋ณต ํ์๋ฅผ ์นด์ดํธํ๊ธฐ ์ํ ๋ณ์๋ฅผ ์ฌ์ฉ์ ํ๋ค.
- ๋ฐ๋ณต ํ์๋ฅผ ๋น๊ต์ฐ์ฐ์๋ฅผ ํตํด ๋ช ํํ๊ฒ ์ค์ ์ ํด์ค ์ ์์.
[ C์ธ์ด - for ์์ ]
[ ๋ค์ค for ๋ฌธ ]
- for ๋ฌธ์ ๋ฐ๋ณต ์คํํ ๋ฌธ์ฅ์ด for ๋ฌธ์ด ํฌํจ๋ ๊ฒฝ์ฐ์ด๋ค. ( 2์ฐจ์ ๋ฃจํ๋ก ๋ณด๋ฉด ๋จ )
[ C์ธ์ด - ๋ค์ค for ์์ ]
(4) while ๋ฌธ
- ์ง์ ๋ ์กฐ๊ฑด์ด ๋ง์กฑ๋๋ ๋์ ๋ฐ๋ณต์ ํด์ค๋ค.
- ์ด๊ธฐ์ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด๋ฉด ๋ฐ๋ณต๋ฌธ์ ๋ฌธ์ฅ์ ํ ๋ฒ๋ ์คํํ์ง ์์ ์๋ ์์.
- ๋ฐ๋ฉด, ์ด๊ธฐ์ ์กฐ๊ฑด์ด ์๋ชป๋๋ฉด ๊ณ์ true๊ฐ ๋์ด ๋ฌดํ ๋ฃจํ์ ๋น ์ง ์ ์์.
[ C์ธ์ด - while ์์ ]
(5) do-while ๋ฌธ
- while ๊ณผ ๋์ผํ๊ฒ ์ง์ ๋ ์กฐ๊ฑด์ด ๋ง์กฑ๋๋ ๋์ ๋ฐ๋ณต์ ํด์ค๋ค.
- while ๊ณผ ๋ค๋ฅธ์ ์ ๋ฐ๋ณต๋ฌธ ๋ด์ ๋ฌธ์ฅ์ ์คํํ ํ ๋ฐ๋ณต ์คํ ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ฒ ๋จ.
- ์ฆ, ๋ฐ๋ณต ์คํํ ๋ฌธ์ฅ์ ์ต์ 1ํ๋ ๋ฐ๋์ ์คํ์ ํ๊ฒ ๋๊ณ ์ดํ์ ์คํ ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ฒ ๋๋ค.
[ C์ธ์ด - do while ์์ ]
โ 4. ๊ธฐํ ์ ์ด๋ฌธ
(1) break ๋ฌธ
- switch, for, while, do - while ๋ฌธ์์ ์ฐ์ด๊ฒ ๋๋ค.
- switch ๋ฌธ์์๋ case ์คํ ํ ๋น ์ ธ ๋์ค๋ ์ฉ๋๋ก ์ฐ์ธ๋ค.
- for, while, do - while ๊ณผ ๊ฐ์ ๋ฐ๋ณต๋ฌธ์์๋ ์คํ ์ค์ธ ๋ฐ๋ณต์ ์ค์งํ๊ณ ๋น ์ ธ ๋์ค๋ ์ฉ๋๋ก ์ฐ์.
(2) continue ๋ฌธ
#include <stdio.h>
int main() {
for (int i = 1; i <= 5; i++) {
if (i == 3)
continue; // i๊ฐ 3์ผ ๋๋ ์๋ printf ๊ฑด๋๋ฐ๊ธฐ
printf("%d\n", i);
}
return 0;
}
- ๋ฐ๋ณต๋ฌธ ์คํ ์ค ๋๋จธ์ง ๋ช ๋ น์ ๊ฑด๋ ๋ด ํ ๋ฐ๋ณต์ ์ฌ๊ฐํ๋ค.
- ์ฝ๊ฒ๋งํด, ์์ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ฐ๋ณต๋ฌธ ์์ ์กฐ๊ฑด๋ฌธ์์ i ๊ฐ 3์ผ ๊ฒฝ์ฐ continue; ํค์๋๋ฅผ ๋ง๋๊ฒ ๋๋ค๋ฉด ๋ฐ๋ณต๋ฌธ ๋ธ๋ก ์์์ ๋ค์ ์ฝ๋ ๋ผ์ธ์ ๋ฌด์ํ๊ณ , ๋ค์ ๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด ๊ฒ์ฌ ๋ถ๋ถ์ผ๋ก ์ด๋์ ํ๊ฒ ๋๋ค. ์ฆ, ํด๋น ๋ฐ๋ณต์ ์คํตํ๋ ๊ฒ์ด๋ค.
(3) goto ๋ฌธ
- ์ง์ ๋ ๋ ์ด๋ธ์ ์์น๋ก ๋ฌด์กฐ๊ฑด ์ ์ด๋ฅผ ์ฎ๊ธฐ๊ฒ ๋์์ฃผ๋ ์ ์ด๋ฌธ์ด๋ค.
- ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฐ์ ๋ก ์ด๋์ํค๋ ๋ช ๋ น์ผ๋ก ๋ณผ ์ ์์.
- ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ์ ์ง์ ํ ์์น(label) ๋ก ์ฆ์ ์ ํ(jump) ์ํค๋ ๋ช ๋ น์ด๋ค.
- ์ฃผ์ ์ฌํญ์ผ๋ก๋ goto ๋ช ๋ น์ด ํฌํจ๋์ง ์์ ๋ธ๋ก์ ๋ ์ด๋ธ ์์น๋ก๋ ์ด๋ํ ์ ์๋ค.
#include <stdio.h>
int main() {
int i = 1;
start: // ๋ผ๋ฒจ ์ ์
printf("%d\n", i);
i++;
if (i <= 5)
goto start; // start ๋ผ๋ฒจ๋ก ์ ํ
return 0;
}
// ์ถ๋ ฅ ๊ฒฐ๊ณผ
// 1
// 2
// 3
// 4
// 5
- ์์ ๊ฐ์ด goto ๋ฌธ์ ์ฌ์ฉ ํ ์ ์๋๋ฐ, ํ๋ก๊ทธ๋จ์ด goto start; ๋ฅผ ๋ง๋๋ฉด start: ๋ผ๋ฒจ๋ก ์ ํํด์ ๋ค์ ์คํ์ ํ๋ ๊ฒ์ด๋ค.
- ํด๋น ์ฝ๋๋ ๋ง์น while ๋ฌธ์ฒ๋ผ ๋ฐ๋ณต์ด ๋ง๋ค์ด์ง ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ ์ ์์. ์ด์ ๊ฐ์ด ์์ฉํด์ ์ฌ์ฉ์ด ๊ฐ๋ฅํจ.
- goto ๋ ๋๋๋ก ์ฐ์ง๋ง๊ณ , ์์ธ ์ํฉ ์ฒ๋ฆฌ์ฉ์ผ๋ก๋ง ์ฐ๋๊ฒ ์ผ๋ฐ์ ์ธ ์์น์.
โ 5. ์ ๋ฆฌํ๊ธฐ
- C ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ์ ์ธ ํ๋ฆ์ ๋ํ ์ ์ด ํํ๋ ์์ฐจ ์ ์ด, ์ ํ ์ ์ด, ๋ฐ๋ณต ์ ์ด๋ก ๋๋ ์ ์๋ค.
- ๊ทธ ์ธ ๋ณด์กฐ ์ ์ด๋ ์กด์ฌํ๋๋ฐ ์ข ๋ฅ๋ break, continue, goto ๋ฌธ์ด ์์.
- ์์ฐจ ์ ์ด๋ ์กฐ๊ฑด๋ฌธ์ด๋ ๋ฐ๋ณต๋ฌธ์ด ์๋ ๊ฐ์ฅ ๋จ์ํ ์ ์ด ๊ตฌ์กฐ์ด๋ฉฐ, ์ด๋ ํ๋ก๊ทธ๋จ์ด ์์์ ์๋๋ก ์์๋๋ก ์คํ๋๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ฆ์ผ๋ก ๋ณผ ์ ์์. ์ด๊ฒ์ด ์์ฐจ ์ ์ด or ์์ฐจ ๊ตฌ์กฐ์.
- ํ๋ก๊ทธ๋๋ฐ ๊ตฌ์กฐ๋ก ์์๋ ์์ฐจ ์ ์ด, ์ ํ ์ ์ด, ๋ฐ๋ณต ์ ์ด ์ธ๊ฐ๋ก ๋๋ ์ ๋ด
'๐ ๏ธBackend > โ๏ธC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C์ธ์ด] ํจ์์ ๊ธฐ์ต ํด๋์ค(2) (0) | 2025.10.15 |
---|---|
[C์ธ์ด] ํจ์์ ๊ธฐ์ต ํด๋์ค(1) (0) | 2025.10.15 |
[C์ธ์ด] ์ ์ถ๋ ฅ ํจ์์ ์ฐ์ฐ์(2) (0) | 2025.10.03 |
[C์ธ์ด] ์ ์ถ๋ ฅ ํจ์์ ์ฐ์ฐ์(1) (0) | 2025.09.05 |
[C์ธ์ด] ์๋ฃํ๊ณผ ์ ํ์ฒ๋ฆฌ๊ธฐ (1) | 2025.08.29 |