ํ๋ก๊ทธ๋จ์ ์คํ์ ์ ์ดํ ์ ์๋ ๋ฐฉ๋ฒ์ธ ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ์ ๋ํด ๋ค๋ฃจ๊ณ , ๊ทธ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฐ๋ ๋ค์ ๋ฐฐ์๋๋ค.
๋ถ ๋์๋ ๋
ผ๋ฆฌํ์์ ์ง๋ฆฌ๊ฐ(truth value)
, ์ฆ ์ฐธ
๊ณผ ๊ฑฐ์ง
์ 1
๊ณผ 0
์ ๋์์ํค๊ณ , ์ด๊ฒ์ ๋ํ ์ฐ์ฐ์ ๋ง์
๊ณผ ๊ณฑ์
์ผ๋ก ๋ฐ๊พผ ๋์ ์ฒด๊ณ์
๋๋ค. ๋ถ ๋์์ ๋ง์
๊ณผ ๊ณฑ์
์ ๋ค์ ์ฑ์ง์ ๋ง์กฑํฉ๋๋ค.
a |
b |
a + b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
a |
b |
a ร b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
์ฌ๊ธฐ์ 1 + 1 = 1
์ด ๋๋ ๊ฒ์ ์ ์ธํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์๋ ๋ง์
, ๊ณฑ์
๊ณผ ํฐ ์ฐจ์ด๊ฐ ๋์ง ์๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ง์
์ ๋
ผ๋ฆฌํฉ(logical disjunction)
๋๋ OR ์ฐ์ฐ
, ๊ณฑ์
์ ๋
ผ๋ฆฌ๊ณฑ(logical conjunction)
๋๋ AND ์ฐ์ฐ
์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ๋๋
๊ณผ ๊ทธ๋ฆฌ๊ณ
๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ถ๋ฆฌ๋ ์ด์ ๋ 0์ ๊ฑฐ์ง, 1์ ์ฐธ์ผ๋ก ๊ต์ฒดํด๋ณด๋ฉด ์ฝ๊ฒ ์ ์ ์์ต๋๋ค.
๋ถ ๋์์์ ์ด๊ฒ ๋ง๊ณ ๋ ๋ถ์ (negation)
๋๋ NOT ์ฐ์ฐ
์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ฐ์ฐ์ด ์์ต๋๋ค.
a |
ยฌa |
---|---|
0 | 1 |
1 | 0 |
์ฐธ์ ๊ฑฐ์ง์ผ๋ก, ๊ฑฐ์ง์ ์ฐธ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ์ฐ์ฐ์ ๋๋ค. ์ด์ธ์๋ ์ฌ๋ฌ ์ฐ์ฐ์ด ์์ง๋ง, ๋์ค์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ถ ๋์์ ๋ง์ ๊ณผ ๊ณฑ์ ์ ๊ตํ๋ฒ์น๊ณผ ๊ฒฐํฉ๋ฒ์น ๋ถ๋ฐฐ๋ฒ์น์ด ๋ชจ๋ ์ฑ๋ฆฝํฉ๋๋ค. ์ฆ, ๋ค์ ์ฑ์ง์ ๋ชจ๋ ๋ง์กฑํฉ๋๋ค.
a + b = b + a
a ร b = b ร a
a + (b + c) = (a + b) + c
a ร (b ร c) = (a ร b) ร c
c(a + b) = ca + cb
๋
๋ ๋ชจ๋ฅด๊ฐ์ ๋ฒ์น(De Morgan's laws)
์ ๋ถ ๋์์์๋ ์ฑ๋ฆฝํฉ๋๋ค.
ยฌ(a + b) = ยฌa ร ยฌb
ยฌ(a ร b) = ยฌa + ยฌb
์์์ ๋ฐฐ์ด ์ธ ์ฐ์ฐ์ ๋ชจ๋ C์์ ์ฐ์ฐ์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ฝ๊ฒ๋, ์์์ ์ฌ์ฉํ ์ฐ์ฐ์์ ๋ชจ์์ด ๋ค๋ฆ
๋๋ค. C์์ ๋
ผ๋ฆฌํฉ์ ||
, ๋
ผ๋ฆฌ๊ณฑ์ &&
, ๋ถ์ ์ !
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
|
๋ผ๋ ๊ธฐํธ๋๋ฐ(bar)
๋ผ๋ ์ด๋ฆ์ด ์์ต๋๋ค. ํค๋ณด๋์์Shift + โฉ
๋ก ์ ๋ ฅํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
printf("%d || %d = %d\n", 0, 0, 0 || 0);
printf("%d || %d = %d\n", 0, 1, 0 || 1);
printf("%d || %d = %d\n", 1, 0, 1 || 0);
printf("%d || %d = %d\n", 1, 1, 1 || 1);
printf("\n");
printf("%d && %d = %d\n", 0, 0, 0 && 0);
printf("%d && %d = %d\n", 0, 1, 0 && 1);
printf("%d && %d = %d\n", 1, 0, 1 && 0);
printf("%d && %d = %d\n", 1, 1, 1 && 1);
printf("\n");
printf("!%d = %d", 0, !0);
printf("!%d = %d", 1, !1);
}
0 || 0 = 0
0 || 1 = 1
1 || 0 = 1
1 || 1 = 1
0 && 0 = 0
0 && 1 = 0
1 && 0 = 0
1 && 1 = 1
!0 = 1
!1 = 0
printf
์์\n
์ ์ฌ์ฉํ๋ฉด ์ค๋ฐ๊ฟ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ํ ์์ธํ ์ค๋ช ์ ๋์ค์ ๋ฌธ์์ด์ ๋ํด ๋ค๋ฃฐ ๋ ํ๊ฒ ์ต๋๋ค.
\
๋ผ๋ ๊ธฐํธ๋๋ฐฑ์ฌ๋์(backslash)
๋ผ๊ณ ๋ถ๋ฆฝ๋๋ค. ์ฌ์ฉํ์๋ ํฐํธ๊ฐ ๋์๊ฐ์ ํ๊ตญ์ด ํฐํธ์ด๋ฉด\
๋โฉ
๋ก ๋ณด์ผ ์๋ ์์ต๋๋ค.
C๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ด๋ค ๊ฐ์ ๋
ผ๋ฆฌ๊ฐ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ฉด, 0
์ ๊ฑฐ์ง์ผ๋ก, 0
์ ์ ์ธํ ๋ชจ๋ ๊ฐ์ ์ฐธ์ผ๋ก ์ทจ๊ธํฉ๋๋ค. ๋ฐ๋ผ์ ์์ ์์ ์์ 1
์ 2
๋ (-5)
๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊ฟ๋ ๋
ผ๋ฆฌ ์ฐ์ฐ์์ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ต๋๋ค.
&&
์ฐ์ฐ์๋ ||
๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ต๋๋ค(&&
๋ ๋
ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์). ๊ทธ๋์ 1 || 2 && 5
๋ 1 || (2 && 5)
๋ก ๋ฒ์ญ๋ฉ๋๋ค. !
์ฐ์ฐ์๋ ํ๋ณํ ์ฐ์ฐ์๋ sizeof
์ฐ์ฐ์์ฒ๋ผ ์ฐ์ ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ต๋๋ค. ๊ทธ๋์ !1 + 5
๋ (!1) + 5
๊ฐ ๋์ด ๊ฒฐ๊ณผ๊ฐ์ด 5
๊ฐ ๋ฉ๋๋ค.
์ด ๊ฐ์ข์์
~์ ๊ฒฐ๊ณผ๊ฐ
์~ is evaluated as
๋ฅผ ๋ฒ์ญํ ๊ฒ์ ๋๋ค.
์ดํญ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ค์ ํญ์ ์ขํญ์ ๊ฒฐ๊ณผ๊ฐ์ ๋จผ์ ๊ณ์ฐ(evaluation)ํ๊ณ , ์ฐํญ์ ๊ฒฐ๊ณผ๊ฐ์ ๊ณ์ฐํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๋ ผ๋ฆฌํฉ ์ฐ์ฐ์์์ ์ขํญ์ด 1์ด๊ฑฐ๋, ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์์์ ์ขํญ์ด 0์ด๋ผ๋ฉด, ๋ถ ๋์์ ๋ค์ ์ฑ์ง์ ์ํด, ์ฐํญ์ ๊ณ์ฐํ ํ์๊ฐ ์์ด์ง๋๋ค.
1 + a = 1
0 ร a = 0
์ฐํญ์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ ๊ฑฐ์ง์ด๋ ํญ์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฐ๊ธฐ ๋๋ฌธ์
๋๋ค. C์์ ์ฑ๋ฅ์ ์ํด ์ด๋ฐ ๊ฒฝ์ฐ ์ฐํญ์ ๊ณ์ฐํ์ง ์์ต๋๋ค. ์ด๋ฐ ๊ธฐ๋ฅ์ ๋จ๋ฝ ํ๊ฐ(short-circuit evaluation)
์ด๋ผ๊ณ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋จ๋ฝ ํ๊ฐ๋ ์์์น ๋ชปํ ๊ฒฐ๊ณผ๋ฅผ ๋
๋๋ค.
#include <stdio.h>
int main()
{
int i = 3, j;
j = 1 || (i = 5);
printf("%d %d", i, j);
}
3 1
(i = 5)
๋ฅผ ํตํด i
์ 5
๋ฅผ ์ง์ด๋ฃ์์์๋ ๋ถ๊ตฌํ๊ณ , ๊ฐ์ ์ถ๋ ฅํ๋ฉด 3
์ด ํ์๋ฉ๋๋ค. ์ด๊ฒ์ ๋
ผ๋ฆฌํฉ ์ฐ์ฐ์์ ์ขํญ์ด ์ฐธ์ด์๊ธฐ ๋๋ฌธ์, (i = 5)
๊ฐ ์คํ๋์ง ์์๊ธฐ ๋๋ฌธ์
๋๋ค.
#include <stdio.h>
int main()
{
int i = 3, j;
j = (1 == 2) && (i = 5);
printf("%d %d", i, j);
}
3 0
๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ขํญ์ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด๋ผ๋ฉด ์ฐํญ์ ์ค์ ๋ก ์คํํ์ง ์์ต๋๋ค.
๋น๊ต ์ฐ์ฐ์(comparison operator; relational operator)
๋ ๋ ์๋ฅผ ๋น๊ตํ์ฌ ๊ฒฐ๊ณผ๊ฐ ์ง๋ฆฌ๊ฐ์ด ๋๋ ์ดํญ ์ฐ์ฐ์๋ค์
๋๋ค. ์ด ์ฌ์ฏ๊ฐ์ง์ ๋น๊ต ์ฐ์ฐ์๋ค์ด ์์ต๋๋ค.
C++20์์ ๋น๊ต ์ฐ์ฐ์๊ฐ ํ๋ ๋ ์ถ๊ฐ๋์์ต๋๋ค. ๋์ค์ ๋ค๋ฃฐ ์์ ์ ๋๋ค.
#include <stdio.h>
int main()
{
printf("%d %d %d\n", 3 < 5, 4 < 4, 6 < 5);
printf("%d %d %d\n", 3 <= 5, 4 <= 4, 6 <= 5);
printf("%d %d %d\n", 3 > 5, 4 > 4, 6 > 5);
printf("%d %d %d\n", 3 >= 5, 4 >= 4, 6 >= 5);
printf("%d %d %d\n", 3 == 5, 4 == 4, 6 == 5);
printf("%d %d %d\n", 3 != 5, 4 != 4, 6 != 5);
}
1 0 0
1 1 0
0 0 1
0 1 1
0 1 0
1 0 1
<
, >
, <=
, >=
๋ ๋ชจ์์์ ๋ณด์๋ฉด ์ ์ ์๊ฒ ์ง๋ง ๋ถ๋ฑํธ์์ ์ ๋ํ ๋น๊ต ์ฐ์ฐ์๋ค์
๋๋ค. ์ฐ์ฐ์์ ๋ฐ๋ผ ์ขํญ์ด๋ ์ฐํญ์ด ๋ฐ๋ํธ๋ณด๋ค ํฌ๊ฑฐ๋, ๋๋ ๊ฐ์ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ์ด 1์ด, ์๋๋ฉด 0์ด ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ==
๋ ์๋ณ์ ์์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฐ์ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ์ด 1, ๊ฐ์ง ์์ผ๋ฉด 0์ด ๋๋ ์ฐ์ฐ์์
๋๋ค. ๋ฐ๋๋ก, !=
๋ ์๋ณ์ ์์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฐ์ง ์์ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ์ด 1, ๊ฐ์ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ์ด 0์ด ๋๋ ์ฐ์ฐ์์
๋๋ค.
๋น๊ต ์ฐ์ฐ์๋ ์ฐ์ ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ๊ณ , ๋
ผ๋ฆฌ ์ฐ์ฐ์๋ณด๋ค ๋์ต๋๋ค. ๊ทธ๋์ ์ 1 + b < 3 * 5 && 6 != c / 4
๋ (((1 + b) < (3 * 5)) && (6 != (c / 4)))
๋ก ๋ฒ์ญ๋ฉ๋๋ค.
๋ณตํฉ๋ฌธ(compound statement)
๋ ์ฌ๋ฌ ๋ฌธ์ฅ์ ํ๋๋ก ๋ฌถ์ ๋ฌธ์ฅ์
๋๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ๋ ๊ฐ๋จํฉ๋๋ค.
{
[<๋ฌธ์ฅ 1>]
[<๋ฌธ์ฅ 2>]
[<๋ฌธ์ฅ 3>]
...
[<๋ฌธ์ฅ n>]
}
๋ชจ์๋ง ๋ณด๋ฉด int main() { ... }
์์ int main()
๋ง ์ง์ด ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ๋ค์ ์์๋ฅผ ๋ด์ฃผ์ธ์.
#include <stdio.h>
int main() {
{ int i; }
{
int j = 5;
printf("%d", j);
}
{
int k = 6;
{
int l = 7;
printf("%d", 7);
}
}
{}
}
int j = 5;
๋ printf("%d", j);
๋ ๊ทธ ์์ฒด๋ก ํ๋์ ๋ฌธ์ฅ์ด์ง๋ง, { int j = 5; printf("%d", j); }
์์ฒด๋ ํ๋์ ๋ฌธ์ฅ์ด ๋ฉ๋๋ค. ๋ณตํฉ๋ฌธ์ ๋ฌธ์ฅ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๊ธฐ ๋๋ฌธ์, ๋ณตํฉ๋ฌธ ์์ ๋ณตํฉ๋ฌธ์ ์ง์ด๋ฃ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. {}
๊ฐ์ด ๋น ๋ณตํฉ๋ฌธ๋ ์์ ์ ์๊ณ , { int i; }
์ฒ๋ผ ๋ฌธ์ฅ์ด ํ๋๋ง ๋ค์ด์๋ ๋ณตํฉ๋ฌธ๋ ์์ ์ ์์ต๋๋ค. ๋ฐฐ์ด์ ์ด๊ธฐํ ์๊ณผ ๋น์ทํ๋ค๋ ๊ฒ์ ์ฃผ์ํด์ฃผ์ธ์.
์กฐ๊ฑด๋ฌธ(conditional statement)
์ ๊ฒฐ๊ณผ๊ฐ์ด ๋
ผ๋ฆฌ๊ฐ์ธ ์์ด ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฌธ์ฅ์ ์ํํ๋ ๋ฌธ์ฅ์
๋๋ค. C์ ๋ํ์ ์ธ ์กฐ๊ฑด๋ฌธ์ if๋ฌธ(if statement)
์
๋๋ค. if๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์๋๋ค.
if (<์กฐ๊ฑด์>) <์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ์คํํ ๋ฌธ์ฅ> [else <์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ ๋ ์คํํ ๋ฌธ์ฅ>]
๋ค์ ์์ ๋ฅผ ๋ด์ฃผ์ธ์.
#include <stdio.h>
int main()
{
if (3 < 5)
printf("3 is smaller than 5\n");
else
printf("3 is not smaller than 5\n");
if (4 == 6)
printf("4 is equal to 6\n");
else
printf("4 is not equal to 6\n");
}
3 is smaller than 5
4 is not equal to 6
if (...)
์์๋ ์กฐ๊ฑด๋ฌธ์ด ๋ค์ด๊ฐ๋๋ฐ, ๊ทธ ์กฐ๊ฑด๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฉด <์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ์คํํ ๋ฌธ์ฅ>
์ด, ๊ฑฐ์ง์ด๋ฉด <์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ ๋ ์คํํ ๋ฌธ์ฅ>
์ด ์คํ๋๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
if๋ฌธ์๋ ๋ณตํฉ๋ฌธ๋ ์ง์ด๋ฃ์ ์ ์์ต๋๋ค.
#include <stdio.h>
int main() {
int i; scanf("%d", &i);
if (1 <= i && i <= 10) {
printf("true: ");
printf("i is between 1 and 10");
}
else {
printf("false: ");
printf("i is not between 1 and 10");
}
}
: 5
true: i is between 1 and 10
: 12
false: i is not between 1 and 10
1 <= i && i <= 10
์ด๋ผ๊ณ ์ ์ ๊ฒ์ ์ฃผ๋ชฉํด์ฃผ์ธ์.1 <= i
์ ๊ฒฐ๊ณผ๋ ๋ ผ๋ฆฌ๊ฐ์ ๋๋ค.i <= 10
๋ ๋ง์ฐฌ๊ฐ์ง์ด๊ณ ์.i
๊ฐ 1๊ณผ 10 ์ฌ์ด์ ์์ผ๋ฉด 1, ์๋๋ฉด 0์ด ๋๋ ์์ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด1 <= i && i <= 10
์ด๋ผ๊ณ ์ ์ด์ผ ํฉ๋๋ค.1 <= i <= 10
์(1 <= i) <= 10
์ผ๋ก ํด์๋๊ธฐ ๋๋ฌธ์,i
๊ฐ 1 ๋ฏธ๋ง์ด๋ผ๊ณ ํด๋0 <= 10
,i
๊ฐ 10์ ์ด๊ณผํด๋1 <= 10
์ด ๋์ด ํญ์ ์ฐธ์ธ ์์ด ๋ฉ๋๋ค. ๋น๊ต ์ฐ์ฐ์์ ๊ฒฐ๊ณผ๋ ๋ ผ๋ฆฌ๊ฐ์ด๋ผ๋ ๊ฒ์ ํญ์ ๊ธฐ์ตํด์ฃผ์ธ์.
๋ง์ฝ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ ๋ ์๋ฌด๊ฒ๋ ์คํํ๊ณ ์ถ์ง ์๋ค๋ฉด else
์์ฒด๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
if (1)
{
printf("Foo\n");
}
printf("Bar\n");
}
Foo
Bar
์
1
์ ๋ ผ๋ฆฌ๊ฐ์ผ๋ก ํด์ํ๋ฉด ์ฐธ์ด๊ธฐ ๋๋ฌธ์ if๋ฌธ์ ์กฐ๊ฑด์์ผ๋ก1
์ ์ฌ์ฉํ๋ฉดif () { ... }
์์ ๋ฌธ์ฅ๋ค์ ํญ์ ์คํ๋ฉ๋๋ค.
if๋ฌธ์ ๊ทธ ์์ฒด๋ก ๋ฌธ์ฅ์ด๊ณ , if๋ฌธ ์์๋ ๋ฌธ์ฅ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ if๋ฌธ ์ฌ๋ฌ๊ฐ๋ฅผ ๊ฒน์ณ ์ธ ์๋ ์์ต๋๋ค.
#include <stdio.h>
int main() {
int i; scanf("%d", &i);
if (i < 0)
printf("i is smaller than 0");
else {
if (i <= 10)
printf("i is between 0 and 10");
else
printf("i is bigger than 10");
}
}
: -2
i is smaller than 0
: 7
i is between 0 and 10
: 15
i is bigger than 10
if๋ฌธ ์์ฒด๋ ํ๋์ ๋ฌธ์ฅ์ด๊ธฐ ๋๋ฌธ์, ์ ์์ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณตํฉ๋ฌธ ์์ด ์ธ ์ ์์ต๋๋ค.
#include <stdio.h>
int main() {
int i; scanf("%d", &i);
if (i < 0)
printf("i is smaller than 0");
else if (i <= 10)
printf("i is between 0 and 10");
else
printf("i is bigger than 10");
}
์ด๊ธฐํ๋์ง ์์ ๋ณ์๋ ์ ์๋์ง ์์ ํ๋์ ์ ๋ฐํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ฐ๋์ 0 ๋ฑ์ผ๋ก ์ด๊ธฐํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ง๊ธ๊น์ง์ ์์ ์์ ํฌ์ธํฐ์ ์ด๋ฏธ ์๋ ๋ณ์๋ ๋ฐฐ์ด์ ์ฃผ์๋ฅผ ๋์ ํ๊ฑฐ๋, ํฌ์ธํฐ๋ฅผ ์ด๊ธฐํํ์ง ์๊ฑฐ๋ ๋ ์ค ํ๋์๋๋ฐ์, ํฌ์ธํฐ๋ 0์ผ๋ก ์ด๊ธฐํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
int main()
{
int *i = 0;
}
ํฌ์ธํฐ๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๋ฉด ์ฅ์ ์ด ์๋๋ฐ์, if๋ฌธ ๋ฑ์์ ์กฐ๊ฑด์์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ ๋, ํฌ์ธํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ฃผ์๊ฐ 0์ด๋ฉด ๊ทธ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ด ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ค์ ์์ ๋ฅผ ๋ด์ฃผ์ธ์.
#include <stdio.h>
int main()
{
int *i = 0, j; scanf("%d", &j);
if (j > 10) i = &j;
if (i)
printf("The pointer is pointing to some integer: %d", *i);
else
printf("The pointer is not pointing anywhere");
}
: 5
The pointer is not pointing anywhere
: 25
The pointer is pointing to some integer: 25
์
๋ ฅ๋ฐ์ ๊ฐ์ด 10 ์ด๊ณผ์ด๋ฉด ํฌ์ธํฐ์ j
์ ์ฃผ์๋ฅผ ๋์
ํ๋ ํ๋ก๊ทธ๋จ์
๋๋ค. ๋งจ ์ฒ์์ 0
์ผ๋ก ์ด๊ธฐํ๋์ด์์๊ธฐ ๋๋ฌธ์, ์กฐ๊ฑด์์ผ๋ก ์ฌ์ฉํ๋ฉด i
๊ฐ ์ด๋ค ๋ณ์๋ฅผ ๊ฐ๋ฆฌํค๋์ง, ์ ๊ฐ๋ฆฌํค๋์ง ์ ์ ์์ต๋๋ค.
C++์์๋ ํฌ์ธํฐ์ 0์ ๋์ ํ ์๋ ์์ง๋ง 0์ ์ง์ ์ ์ผ๋ก ๋์ ํ๋ ๊ฒ์ ์ข์ง ์์ ์ต๊ด์ ๋๋ค. C++์์ ๋น ํฌ์ธํฐ๋ฅผ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ๋์ค์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
5์ฅ์์ ์ฐ์ฐ์์ ๋ถ๋ฅ์ ๋ํด ์ค๋ช
ํ์ ๋, ํผ์ฐ์ฐ์๊ฐ ์ธ ๊ฐ์ธ ์ผํญ ์ฐ์ฐ์(ternary operator)
๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋จํญ ์ฐ์ฐ์๋ ์ดํญ ์ฐ์ฐ์์ ๋ฌ๋ฆฌ, C์ ์ผํญ ์ฐ์ฐ์๋ ๋ฑ ํ๋์ธ๋ฐ์, ๋ฐ๋ก ์กฐ๊ฑด ์ฐ์ฐ์(conditional operator)
์
๋๋ค. ์กฐ๊ฑด ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์๋๋ค.
<์กฐ๊ฑด์> ? <์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ๊ฒฐ๊ณผ๊ฐ์ ์ป์ ์> : <์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ ๋ ๊ฒฐ๊ณผ๊ฐ์ ์ป์ ์>
๋ค์ ์์ ๋ฅผ ๋ด์ฃผ์ธ์.
#include <stdio.h>
int main()
{
int i; scanf("%d", &i);
int j = (i % 2 == 0) ? 20 : 10;
printf("%d", j);
}
: 16
20
: 27
10
i % 2 == 0
๋ผ๋ ์์ i
๊ฐ ์ง์์ด๋ฉด ์ฐธ, ํ์์ด๋ฉด ๊ฑฐ์ง์ด ๋๋ ์์
๋๋ค. ์กฐ๊ฑด ์ฐ์ฐ์์ <์กฐ๊ฑด์>
์ ์ด ์์ ๋ฃ์ผ๋, i
์ ๊ฐ์ ๋ฐ๋ผ j
๊ฐ 20
๋๋ 10
์ด ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์กฐ๊ฑด ์ฐ์ฐ์๋ if๋ฌธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, <์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ๊ฒฐ๊ณผ๊ฐ์ ์ป์ ์>
๊ณผ <์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ ๋ ๊ฒฐ๊ณผ๊ฐ์ ์ป์ ์>
์ค ํ ์ชฝ๋ง ์คํํฉ๋๋ค. ๋ค์ ์์ ๋ฅผ ๋ด์ฃผ์ธ์.
#include <stdio.h>
int main()
{
int i = 5;
int j = (1 != 2) ? 6 : (i = 7);
printf("%d %d", i, j);
}
5 6
์ (1 != 2)
๊ฐ ์ฐธ์ด๊ธฐ ๋๋ฌธ์, (i = 7)
์ ์คํ๋์ง ์์ต๋๋ค.
์ปดํจํฐ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ ์ค ํ๋๋ ์ฃผ์ด์ง ์ผ์ ์์ฃผ ๋ง์ ํ์๋ก ๊พธ์คํ ํ ์ ์๋ค๋ ์ ์
๋๋ค. ์ญ๋ง๋ช
์ ๋๋ฅผ ๋์์ผ๋ก ํ๋ ํต๊ณ๋ฅผ ๋ธ๋ค๊ณ ํ์ ๋, ์ฌ๋์ด ํ๋ ค๊ณ ํ๋ฉด ๋ช ์ฒ๋ช
๋ ๋์ง ์์ ์ง์น ๊ฒ์
๋๋ค. ํ์ง๋ง ์ปดํจํฐ๋ ์ญ๋ง๋ช
์ด ์๋๋ผ ์ญ์ต๋ช
์ด๋ผ๊ณ ํด๋ ์ง์น์ง ์๊ณ ํต๊ณ์ ํ์ํ ๊ณ์ฐ์ ์ํํ ์ ์์ต๋๋ค. ๋ฐ๋ณต๋ฌธ(loop)
์ ์ด๋ ๊ฒ ๋ฐ๋ณต๋๋ ์์
์ ์ํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฌธ์ฅ์
๋๋ค.
while๋ฌธ์ C์ ๋ฐ๋ณต๋ฌธ ์ค ํ๋์ ๋๋ค. while๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์๋๋ค.
while (<์กฐ๊ฑด์>) <์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ์คํํ ๋ฌธ์ฅ>
while๋ฌธ์
<์กฐ๊ฑด์>
์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฑฐ์ง์ด๋ผ๋ฉด ๋ฌธ์ฅ์ ์ข ๋ฃํ๊ณ , ์ฐธ์ด๋ผ๋ฉด 2๋ก ๊ฐ๋๋ค.<์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ์คํํ ๋ฌธ์ฅ>
์ ์คํํฉ๋๋ค.- 1๋ก ๋์๊ฐ๋๋ค.
๋ค์ ์์ ๋ฅผ ๋ด์ฃผ์ธ์.
#include <stdio.h>
int main()
{
int i; scanf("%d", &i);
while (i > 0)
printf("%d ", i--);
}
: 5
5 4 3 2 1
5 4 3 2 1
์ด ์ถ๋ ฅ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์ํํ
์
5
๋ฅผ ์ ๋ ฅ๋ฐ์i
์5
๊ฐ ๋ค์ด๊ฐ๋๋ค. 5 > 0
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("%d ", i--);
๊ฐ ์คํ๋์ด5
๊ฐ ์ถ๋ ฅ๋๊ณi
๊ฐ4
๊ฐ ๋ฉ๋๋ค.4 > 0
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("%d ", i--);
๊ฐ ์คํ๋์ด4
๊ฐ ์ถ๋ ฅ๋๊ณi
๊ฐ3
์ด ๋ฉ๋๋ค.3 > 0
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("%d ", i--);
๊ฐ ์คํ๋์ด3
์ด ์ถ๋ ฅ๋๊ณi
๊ฐ2
๊ฐ ๋ฉ๋๋ค.2 > 0
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("%d ", i--);
๊ฐ ์คํ๋์ด2
๊ฐ ์ถ๋ ฅ๋๊ณi
๊ฐ1
์ด ๋ฉ๋๋ค.1 > 0
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("%d ", i--);
๊ฐ ์คํ๋์ด1
์ด ์ถ๋ ฅ๋๊ณi
๊ฐ0
์ด ๋ฉ๋๋ค.0 > 0
์ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด๋ฏ๋ก, while๋ฌธ์ด ์ข ๋ฃ๋ฉ๋๋ค.
์ฆ, while๋ฌธ์ ์กฐ๊ฑด์ -> ์คํ -> ์กฐ๊ฑด์ -> ์คํ -> ... -> ์กฐ๊ฑด์ -> ์ข
๋ฃ
์ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค.
break๋ฌธ์ ๋ฐ๋ณต๋ฌธ ์์์ ์กฐ๊ฑด๋ฌธ์ ๊ฒฐ๊ณผ์ ์๊ด์์ด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ ์ ์๋ ๋ฌธ์ฅ์ ๋๋ค. while๋ฌธ๋ ๋ฐ๋ณต๋ฌธ์ด๊ธฐ ๋๋ฌธ์ while๋ฌธ ์์์ break๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. break๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค.
break;
์ฆ, break๋ฌธ์ ์์ด ํ์์๋ ๋ฌธ์ฅ์ ๋๋ค.
#include <stdio.h>
int main()
{
int i; scanf("%d", &i);
while (i > 0)
{
printf("%d ", i);
if (i == 6)
{
printf("foo");
break;
}
i -= 1;
}
}
: 5
5 4 3 2 1
: 8
8 7 6 foo
8์ ์
๋ ฅํ์ ๋ 8 7 6 foo
๊ฐ ์ถ๋ ฅ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์ํํ
์
8
๋ฅผ ์ ๋ ฅ๋ฐ์i
์8
์ด ๋ค์ด๊ฐ๋๋ค. 8 > 0
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("%d ", i);
๊ฐ ์คํ๋์ด8
์ด ์ถ๋ ฅ๋ฉ๋๋ค.8 == 6
์ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด๋ฏ๋ก, if๋ฌธ ์์ชฝ์ด ์คํ๋์ง ์์ต๋๋ค.i -= 1;
์ ์ํดi
๊ฐ7
์ด ๋ฉ๋๋ค.7 > 0
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("%d ", i);
๊ฐ ์คํ๋์ด7
์ด ์ถ๋ ฅ๋ฉ๋๋ค.7 == 6
์ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด๋ฏ๋ก, if๋ฌธ ์์ชฝ์ด ์คํ๋์ง ์์ต๋๋ค.i -= 1;
์ ์ํดi
๊ฐ6
์ด ๋ฉ๋๋ค.6 > 0
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("%d ", i);
๊ฐ ์คํ๋์ด6
์ด ์ถ๋ ฅ๋ฉ๋๋ค.6 == 6
์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฏ๋ก,printf("foo");
๊ฐ ์คํ๋์ดfoo
๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.break;
๊ฐ ์คํ๋์ด while๋ฌธ์ด ์ข ๋ฃ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํ๋ ์์ ์ ๋ฐ๋ณต๋ฌธ์ ์คํ์ ์ข ๋ฃํ ์ ์์ต๋๋ค.
do-while๋ฌธ๋ C์ ๋ฐ๋ณต๋ฌธ ์ค ํ๋์ ๋๋ค. do-while๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์๋๋ค.
do <์คํํ ๋ฌธ์ฅ> while (<์กฐ๊ฑด์>);
do-while๋ฌธ ๋์ ๋ถ์ด์๋ ์ธ๋ฏธ์ฝ๋ก ์ ์ฃผ์ํด์ฃผ์ธ์. ๋ฐ๋์ ์ธ๋ฏธ์ฝ๋ก ์ด ๋ถ์ด์ผ ํฉ๋๋ค.
do-while๋ฌธ์
<์คํํ ๋ฌธ์ฅ>
์ ์คํํฉ๋๋ค.<์กฐ๊ฑด์>
์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฑฐ์ง์ด๋ผ๋ฉด ๋ฌธ์ฅ์ ์ข ๋ฃํ๊ณ , ์ฐธ์ด๋ผ๋ฉด 3์ผ๋ก ๊ฐ๋๋ค.<์คํํ ๋ฌธ์ฅ>
์ ์คํํฉ๋๋ค.2
๋ก ๋์๊ฐ๋๋ค.
์ฆ, while๋ฌธ๊ณผ ๋ค๋ฅด๊ฒ ๋งจ ์ฒ์์ด ์กฐ๊ฑด๋ฌธ์ด ์๋๋ผ, ์คํ -> ์กฐ๊ฑด์ -> ์คํ -> ... -> ์กฐ๊ฑด์ -> ์ข
๋ฃ
์ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค.
#include <stdio.h>
int main()
{
int i; scanf("%d", &i);
do
{
printf("%d ", i);
i -= 1;
} while (i > 5);
}
: 5
5
: 8
8 7 6
์กฐ๊ฑด์์ด i > 5
์์๋ ๋ถ๊ตฌํ๊ณ 5
๊ฐ ์ถ๋ ฅ๋ ์ด์ ๋ do-while๋ฌธ์ด ๋งจ ์ฒ์์๋ ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ์ ๊ณ ๋ คํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
do-while๋ฌธ๋ ๋ฐ๋ณต๋ฌธ์ด๊ธฐ ๋๋ฌธ์, break๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
#include <stdio.h>
int main()
{
int i = 5;
do
{
printf("%d", i);
break;
} while (i > 0);
}
5
๋ง์ง๋ง์ผ๋ก ์๊ฐํ ๋ฐ๋ณต๋ฌธ์ for๋ฌธ์ ๋๋ค. for๋ฌธ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง์ ๋๋ค.
for (<๋ณ์ ์ ์ธ๋ฌธ> [<์กฐ๊ฑด์>]; [<๋ฐ๋ณต์>]) <์คํ๋ฌธ>
for ([<์ด๊ธฐ์>]; [<์กฐ๊ฑด์>]; [<๋ฐ๋ณต์>]) <์คํ๋ฌธ>
for๋ฌธ์
<๋ณ์ ์ ์ธ๋ฌธ>
์ด๋<์ด๊ธฐ์>
์ ์คํํฉ๋๋ค.<์กฐ๊ฑด์>
์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฑฐ์ง์ด๋ผ๋ฉด ๋ฌธ์ฅ์ ์ข ๋ฃํ๊ณ , ์ฐธ์ด๋ผ๋ฉด 3์ผ๋ก ๊ฐ๋๋ค.<์คํ๋ฌธ>
์ ์คํํฉ๋๋ค.<๋ฐ๋ณต์>
์ ์คํํฉ๋๋ค.- 2๋ก ๋์๊ฐ๋๋ค.
์ฆ, ์ ์ชฝ ๋ค ๋ค์๊ณผ ๊ฐ์ while๋ฌธ์ผ๋ก ์นํํ ์ ์์ต๋๋ค.
{
<๋ณ์ ์ ์ธ๋ฌธ> | <์ด๊ธฐ์>;
while (<์กฐ๊ฑด์>)
{
<์คํ๋ฌธ>
<๋ฐ๋ณต์>;
}
}
์์ผ๋ก ๋ฌธ๋ฒ ์ค๋ช ์์
|
๋๋๋
์ผ๋ก ํด์ํด์ฃผ์ธ์.
์์๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
#include <stdio.h>
int main()
{
for (int i = 0; i < 5; ++i)
printf("%d ", i);
}
0 1 2 3 4
์ด ์์ ์์ for๋ฌธ ์์์ ๋ณ์ ์ ์ธ๋ฌธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, for๋ฌธ์ ์ฌ์ฉ ๋ฐฉ๋ฒ ๋ ๊ฐ ์ค ์์ ๋ฌธ๋ฒ์ด ์ ์ฉ๋จ์ ์ ์ ์์ต๋๋ค. ๋ ์ฌ์ด ์ดํด๋ฅผ ์ํด, ์ ์์ ์ for๋ฌธ์ while๋ฌธ์ผ๋ก ์นํํด๋ณด๊ฒ ์ต๋๋ค.
#include <stdio.h>
int main()
{
{
int i = 0;
while (i < 5)
{
printf("%d ", i);
++i;
}
}
}
0 1 2 3 4
๊ฐ ์ถ๋ ฅ๋ ๊ณผ์ ์ด ๋ณด์ด์๋์?
0 < 5
์ ๊ฒฐ๊ณผ๋ ์ฐธ์ด๊ธฐ ๋๋ฌธ์,printf("%d ", i);
๊ฐ ์คํ๋์ด0
์ด ์ถ๋ ฅ๋ฉ๋๋ค.++i
๊ฐ ์คํ๋์ดi
๊ฐ1
์ด ๋ฉ๋๋ค.1 < 5
์ ๊ฒฐ๊ณผ๋ ์ฐธ์ด๊ธฐ ๋๋ฌธ์,printf("%d ", i);
๊ฐ ์คํ๋์ด1
์ด ์ถ๋ ฅ๋ฉ๋๋ค.++i
๊ฐ ์คํ๋์ดi
๊ฐ2
๊ฐ ๋ฉ๋๋ค.2 < 5
์ ๊ฒฐ๊ณผ๋ ์ฐธ์ด๊ธฐ ๋๋ฌธ์,printf("%d ", i);
๊ฐ ์คํ๋์ด2
๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.++i
๊ฐ ์คํ๋์ดi
๊ฐ3
์ด ๋ฉ๋๋ค.3 < 5
์ ๊ฒฐ๊ณผ๋ ์ฐธ์ด๊ธฐ ๋๋ฌธ์,printf("%d ", i);
๊ฐ ์คํ๋์ด3
์ด ์ถ๋ ฅ๋ฉ๋๋ค.++i
๊ฐ ์คํ๋์ดi
๊ฐ4
๊ฐ ๋ฉ๋๋ค.4 < 5
์ ๊ฒฐ๊ณผ๋ ์ฐธ์ด๊ธฐ ๋๋ฌธ์,printf("%d ", i);
๊ฐ ์คํ๋์ด4
๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.++i
๊ฐ ์คํ๋์ดi
๊ฐ5
๊ฐ ๋ฉ๋๋ค.5 < 5
์ ๊ฒฐ๊ณผ๋ ๊ฑฐ์ง์ด๊ธฐ ๋๋ฌธ์, while๋ฌธ์ด ์ข ๋ฃ๋ฉ๋๋ค.
๋์ผํ ํ๋ก๊ทธ๋จ์ ๋ณ์ ์ ์ธ๋ฌธ ๋์ ์ด๊ธฐ์์ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 5; ++i)
printf("%d ", i);
}
์ด ์์ ์ for๋ฌธ์ while๋ฌธ์ผ๋ก ์นํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ณํฉ๋๋ค.
#include <stdio.h>
int main()
{
int i;
{
i = 0;
while (i < 5)
{
printf("%d ", i);
++i;
}
}
}
์ ์์ ์ ๋ค๋ฅด๊ฒ int i;
๊ฐ ์๋ก ์ฌ๋ผ๊ฐ๊ธด ํ์ง๋ง, ์คํ์ ๋ณ๋ก ์ฐจ์ด๊ฐ ์์ ๊ฒ์
๋๋ค. ๋์ผํ๊ฒ 0 1 2 3 4
๋ฅผ ์ถ๋ ฅํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
for๋ฌธ๋ ๋ฐ๋ณต๋ฌธ์ด๊ธฐ ๋๋ฌธ์ break๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
for (int i = 5; i >= 0; --i)
{
if (i == 2)
break;
printf("%d ", i);
}
}
5 4 3
์ ์์ ์ for๋ฌธ์ while๋ฌธ์ผ๋ก ์นํํด๋ณด๊ฒ ์ต๋๋ค.
#include <stdio.h>
int main()
{
{
int i = 5;
while (i >= 0)
{
if (i == 2)
break;
printf("%d ", i);
--i;
}
}
}
5 4 3
์ด ์ ์ถ๋ ฅ๋๋์ง ๊ฐ์ด ์กํ์๋์? for๋ฌธ์ ๋ณต์กํ์ง๋ง ์์ฃผ ๋ง์ด ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์, ๋ถ์ํ๊ธฐ ํ๋ค์ค ๋ while๋ฌธ์ผ๋ก ์นํํด๋ณด์๋ฉด์ for๋ฌธ์ ์ต์ํด์ง๋ ค๊ณ ๋
ธ๋ ฅํด์ฃผ์ธ์.
for๋ฌธ์ ๋ฐฐ์ด๊ณผ ํจ๊ป ์ฌ์ฉ๋ ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํฉ๋๋ค. 6์ฅ์์ sizeof
์ฐ์ฐ์๋ก ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ด๊ฑธ for๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
int arr[] = { 1, 1, 2, 3, 5, 8, 13, };
printf("int arr[] = { ");
for (int i = 0; i < sizeof arr / sizeof(int); ++i)
printf("%d, ", arr[i]);
printf("};");
}
int arr[] = { 1, 1, 2, 3, 5, 8, 13, };
์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐฐ์ด์ ์ ๋ ฅ๋ฐ์ ๋๋ for๋ฌธ์ ํ์ฉํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
int arr[5];
int len = sizeof arr / sizeof(int);
for (int i = len - 1; i >= 0; --i)
scanf("%d", arr + i);
for (int i = 0; i < len; ++i)
printf("%d ", arr[i] * 2);
}
: 18 62 17 26 20
40 52 34 124 36
: 18
: 62 17
: 26 20
40 52 34 124 36
์ ์์ ์์
arr[4]
,arr[3]
,arr[2]
, ... ์์๋๋ก ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๊ณ ์์ต๋๋ค.
arr[i]
๊ฐ*(arr + i)
๋ ๋์น๋ผ๋ ๊ฒ์ ๊ธฐ์ตํด์ฃผ์ธ์.&arr[i]
๋arr + i
๊ฐ ๋ฉ๋๋ค.
6์ฅ์์
scanf
๊ฐ ์ฌ์ฉ์์ ์ ๋ ฅ์ ์คํ์ด์ค๋ ์ค๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถํ๋ค๊ณ ์ธ๊ธํ ๊ฒ์ ๊ธฐ์ตํด์ฃผ์ธ์.
for๋ฌธ์ ์ด๊ธฐ์, ์กฐ๊ฑด์, ๋ฐ๋ณต์์ ๋ชจ๋ ์๋ต์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ธฐ์์ด๋ ๋ฐ๋ณต์์ด ์๋ต๋๋ ๊ฒ์ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค. for (; <์กฐ๊ฑด์>;) <์คํ๋ฌธ>
์ฒ๋ผ ์ฐ๋ฉด while (<์กฐ๊ฑด์>) <์คํ๋ฌธ>
์ด ๋๋ ๊ฒ๊ณผ ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
for ([์ด๊ธฐ์]; <์กฐ๊ฑด์>; [๋ฐ๋ณต์]) <์คํ๋ฌธ>
->
{
[์ด๊ธฐ์];
while (<์กฐ๊ฑด์>)
{
<์คํ๋ฌธ>
[๋ฐ๋ณต์];
}
}
์ฌ๊ธฐ์ [์ด๊ธฐ์]
๊ณผ [๋ฐ๋ณต์]
๋ง ์๋ตํ๋ฉด ๋๋๊น์. ๋ณ์ ์ ์ธ๋ฌธ์ด ํฌํจ๋ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
for (<๋ณ์ ์ ์ธ๋ฌธ> <์กฐ๊ฑด์>; [๋ฐ๋ณต์]) <์คํ๋ฌธ>
->
{
<๋ณ์ ์ ์ธ๋ฌธ>
while (<์กฐ๊ฑด์>)
{
<์คํ๋ฌธ>
[๋ฐ๋ณต์];
}
}
๊ทผ๋ฐ ์ฌ๊ธฐ์ ์กฐ๊ฑด์์ ์๋ตํด๋ฒ๋ฆฌ๋ฉด while๋ฌธ ์์ ์กฐ๊ฑด์์ด ๋ค์ด์์ง ์๊ฒ ๋์ด ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋์ ์กฐ๊ฑด์์ด ์๋ต๋๋ฉด while๋ฌธ์ผ๋ก ์นํํ์ ๋ ์กฐ๊ฑด์์ 1
์ด ๋ค์ด์๋ ๊ฒ์ผ๋ก ์๊ฐํฉ๋๋ค. ์์๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
#include <stdio.h>
int main()
{
for (int i = 0;;i += 2)
{
printf("%d ", i);
}
}
์ด ์์ ๋ฅผ while๋ฌธ์ผ๋ก ์นํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ธ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
{
int i = 0;
while (1)
{
printf("%d ", i);
i += 2;
}
}
}
์ด ํ๋ก๊ทธ๋จ์ Ctrl + F5
๋ฅผ ๋๋ฌ ์คํํด๋ณด๋ฉด
0 2 4 6 8 10 12 14 16 18 20 ...
ํ๋ก๊ทธ๋จ์ด ๋ฉ์ถ์ง ์๊ณ ๋๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
continue๋ฌธ์ ๋ฐ๋ณต๋ฌธ ์์์ ํ ๋ฒ์ ๋ฐ๋ณต์ ์ข ๋ฃํ ์ ์๋ ๋ฌธ์ฅ์ ๋๋ค. ํ ๋ฒ์ ๋ฐ๋ณต์ด๋ผ๋ ๋ง์ด ๋ชจํธํ๋ค๊ณ ๋๋ผ์ค ๊ฒ ๊ฐ์๋ฐ, ์ ํํ ์ด๋ค ์๋ฏธ์ธ์ง ๋ฐ์์ ์ค๋ช ํ๊ฒ ์ต๋๋ค. continue๋ฌธ์ break๋ฌธ ์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค.
continue;
continue๋ฌธ๋ ์์ด ํ์ํ์ง ์์ต๋๋ค.
#include <stdio.h>
int main()
{
int i = 0;
while (i < 5)
{
printf("%d ", i);
continue;
++i;
}
}
0 0 0 0 0 0 ...
continue๋ฌธ์ ์ฌ์ฉํ๋ continue;
๋ฐ์ ์๋ ++i
๊ฐ ์คํ๋์ง ์๊ณ ์์ต๋๋ค. ์ฝ๋๋ฅผ ์์ธํ ๋ถ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ด ์์ํ์ ๋,
1. ์ ์ ํ ๊ณต๊ฐ์ i๋ผ๊ณ ์ด๋ฆ์ง๊ณ 0์ ์ง์ด๋ฃ์ต๋๋ค.
2. i < 5์ ๊ฒฐ๊ณผ๊ฐ 1์ด ์๋๋ผ๋ฉด while๋ฌธ์ ์ข
๋ฃํฉ๋๋ค.
3. i์ ๋ค์ด์๋ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
4. 2๋ก ์ด๋ํฉ๋๋ค.
5. i๋ฅผ 1 ์ฆ๊ฐ์ํต๋๋ค.
6. 2๋ก ์ด๋ํฉ๋๋ค.
4๋ฒ์์ 2๋ฒ์ผ๋ก ์ด๋ํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ฆ, ๋ชจ๋ ๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์ ์คํ -> ๋ฐ๋ณตํ ๋ฌธ์ฅ ์ํ
์ ํํ๋ฅผ ๋ ๋๋ฐ, continue๋ฌธ์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณตํ ๋ฌธ์ฅ ์ํ
๊ณผ์ ์ ์ค์งํ๊ณ ๋ค์ ์กฐ๊ฑด์ ์คํ
๊ณผ์ ์ผ๋ก ๋์๊ฐ๋๋ค. ๊ทธ๋์ ์ ์์ ์์ while๋ฌธ ๋์ ์ do-while๋ฌธ์ ์ฌ์ฉํด๋ ๋น์ทํ ์ผ์ด ์ผ์ด๋ฉ๋๋ค.
for๋ฌธ์์๋ ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค. ๋ค์ ์์ ๋ฅผ ๋ด์ฃผ์ธ์.
#include <stdio.h>
int main()
{
for (int i = 0; i < 3; ++i)
{
printf("%d ", i);
continue;
printf("foo ");
}
}
0 1 2
์ค๊ฐ์ ์๋ continue;
์์ ๋ฐ๋ก ์กฐ๊ฑด์ ์คํ ๊ณผ์ ์ผ๋ก ๋์ด๊ฐ๋ค๋ฉด ++i
๊ฐ ์คํ๋์ง ์์์ ๋, i
๊ฐ ์ ์ฆ๊ฐํ๋ ๋ชจ์ต์ ํ์ธํ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ for๋ฌธ ๋ด์์ continue๋ฌธ์ ์ฌ์ฉํ๋ฉด, ์กฐ๊ฑด์ ์คํ ๊ณผ์ ์ด ์๋๋ผ ๋ฐ๋ณต์ ์คํ ๊ณผ์ ์ผ๋ก ๋์ด๊ฐ๋๋ค. ์ ์์ ์์ 0 1 2
๊ฐ ์ถ๋ ฅ๋ ๊ณผ์ ์ ๋ถ์ํด๋ณด๊ฒ ์ต๋๋ค.
0 < 3
์ ๊ฒฐ๊ณผ๋ ์ฐธ์ด๊ธฐ ๋๋ฌธ์,printf("%d ", i);
๊ฐ ์คํ๋์ด0
์ด ์ถ๋ ฅ๋ฉ๋๋ค.continue;
๊ฐ ์คํ๋์ด<์คํ๋ฌธ>
์ด ์ข ๋ฃ๋ฉ๋๋ค.++i;
๊ฐ ์คํ๋์ดi
๊ฐ1
์ด ๋ฉ๋๋ค.1 < 3
์ ๊ฒฐ๊ณผ๋ ์ฐธ์ด๊ธฐ ๋๋ฌธ์,printf("%d ", i);
๊ฐ ์คํ๋์ด1
์ด ์ถ๋ ฅ๋ฉ๋๋ค.continue;
๊ฐ ์คํ๋์ด<์คํ๋ฌธ>
์ด ์ข ๋ฃ๋ฉ๋๋ค.++i;
๊ฐ ์คํ๋์ดi
๊ฐ2
๊ฐ ๋ฉ๋๋ค.2 < 3
์ ๊ฒฐ๊ณผ๋ ์ฐธ์ด๊ธฐ ๋๋ฌธ์,printf("%d ", i);
๊ฐ ์คํ๋์ด2
๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.continue;
๊ฐ ์คํ๋์ด<์คํ๋ฌธ>
์ด ์ข ๋ฃ๋ฉ๋๋ค.++i;
๊ฐ ์คํ๋์ดi
๊ฐ3
์ด ๋ฉ๋๋ค.3 < 3
์ ๊ฒฐ๊ณผ๋ ๊ฑฐ์ง์ด๊ธฐ ๋๋ฌธ์ for๋ฌธ์ด ์ข ๋ฃ๋ฉ๋๋ค.
๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์์ด ์ฐธ์ด๋ฉด ์ฃผ์ด์ง ๋ฌธ์ฅ์ ๊ณ์ ์ํํฉ๋๋ค. ์กฐ๊ฑด์์ผ๋ก 1
์ด๋ 2
, 20 < 100
์ฒ๋ผ ๊ฒฐ์ ๊ฐ์ด ํญ์ ์ฐธ์ผ๋ก ๊ฐ์ฃผ๋๋ ๊ฐ์ธ ์์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์์ํ ๋ฐ๋ณต๋๊ฒ ๋ฉ๋๋ค. ์ด๋ฐ ๋ฐ๋ณต๋ฌธ์ ๋ฌดํ ๋ฃจํ(infinite loop)
๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
ํ๋ก๊ทธ๋จ์ ์ข
๋ฅ์ ๋ฐ๋ผ ๋ฌดํ ๋ฃจํ๋ฅผ ์ฌ์ฉํด์ผํ๋ ๊ฒฝ์ฐ๋ ์์ง๋ง, ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ์ ๋ฌดํ ๋ฃจํ๋ฅผ ์ฌ์ฉํ ์ผ์ด ์์ต๋๋ค. ๋ฌดํ ๋ฃจํ์ ๊ฐํ๋ค
๋ผ๋ ํํ์ด ์์ ์ ๋๋ก ๋ฌดํ ๋ฃจํ๊ฐ ์คํ ์ค์ธ ์ํฉ์ ๋๊ฒ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์
๋๋ค. ์๋ฅผ ๋ค์ด, 1๋ถํฐ 10๊น์ง์ ์ ์๋ฅผ ๊ฑฐ๊พธ๋ก ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํฉ๋๋ค.
#include <stdio.h>
int main()
{
for (int i = 10; i >= 1; ++i)
printf("%d ", i);
}
๊ทธ๋ฐ๋ฐ, ์๋ --i
๋ผ๊ณ ์จ์ผ ํ๋ ๊ฑธ ++i
๋ผ๊ณ ์จ๋ฒ๋ ธ์ต๋๋ค. i >= 1
์ ํญ์ 1
์ด ๋ฉ๋๋ค. ๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์์ด ํญ์ ์ฐธ์ด๋ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฉ๋๋ค. ์ด์ฒ๋ผ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ๋ณดํต ์ข์ง ์์ ์ผ์ด ์ผ์ด๋ฌ์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๊ทธ๋์ ์กฐ๊ฑด์์ ํญ์ ์ฐธ์ด ๋๋ ์์ ๋ฃ์ง๋ ์์๋์ง ํ์ธํ๊ณ , ํน์ 1
์ ๊ผญ ๋ฃ์ด์ผ ํ๋ค๋ฉด ๋ค์ ์์ ์ฒ๋ผ break๋ฌธ์ ์ ์ ํ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
printf("Sum calculator\n");
int sum = 0;
while (1)
{
printf("Gimme a number: ");
int i; scanf("%d", &i);
if (!i)
break;
sum += i;
}
printf("Sum: %d", sum);
}
Sum calculator
Gimme a number: 7
Gimme a number: 18
Gimme a number: 25
Gimme a number: 16
Gimme a number: 19
Gimme a number: -34
Gimme a number: 14
Gimme a number: 0
Sum: 65
์ ์์ ์ฒ๋ผ break๋ฌธ์ด ์คํ๋ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์ถฉ๋ถํ ์์ผ๋ฉด ์กฐ๊ฑด์์ด
1
์ด๋ผ๊ณ ํ๋๋ผ๋ ๋ฌดํ ๋ฃจํ๋ผ๊ณ ๋ถ๋ฅด์ง ์์ต๋๋ค.
์
!i
์ ์ฃผ๋ชฉํด์ฃผ์ธ์. ๋ถ์ ์ฐ์ฐ์๋ ์ฐธ์ธ ๊ฐ์ ๊ฑฐ์ง์ผ๋ก, ๊ฑฐ์ง์ธ ๊ฐ์ ์ฐธ์ผ๋ก ๋ฐ๊ฟ์ค๋๋ค. ์ฆ,0
์ด ์๋ ์์0
์ผ๋ก,0
์ธ ์์1
๋ก ๋ฐ๊ฟ์ฃผ๋ ์ฐ์ฐ์์ ๋๋ค. ๊ทธ๋์i
๊ฐ0
์ด ์๋๋ฉด ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ์ด0
์ด ๋์ด if๋ฌธ ์์ชฝ์ด ์คํ๋์ง ์๊ณ ,i
๊ฐ0
์ด๋ฉด ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ์ด1
์ด ๋์ด if๋ฌธ ์์ชฝ์ด ์คํ๋ฉ๋๋ค. ์ด๋ ๊ฒ ์ฌ์ฉ์๊ฐ0
์ ์ ๋ ฅํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฐ๋ณต๋ฌธ๋ค๋ ๋ฌธ์ฅ์ด๊ธฐ ๋๋ฌธ์, ๋ฐ๋ณต๋ฌธ ์์ ๋ฐ๋ณต๋ฌธ์ ์ง์ด๋ฃ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ณต๋ฌธ๋ผ๋ฆฌ ๊ฒน์ณ์ฐ๋ ๋ํ์ ์ธ ์์๊ฐ ๋ฐ๋ก ๊ตฌ๊ตฌ๋จ ์ถ๋ ฅ์ธ๋ฐ์,
#include <stdio.h>
int main()
{
int row_num = 2;
while (row_num <= 9)
{
for (int i = 1; i <= 9; ++i)
printf("%d * %d = %d\n", row_num, i, row_num * i);
++row_num;
}
}
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
...
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
์ด๋ ๊ฒ ์์๊ฐ์ ๊ตฌ๊ตฌ๋จ์ ๊ณ์ฐํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๋ฐ๋ณต๋ฌธ๋ฟ๋ง ์๋๋ผ ์กฐ๊ฑด๋ฌธ๋ ๋ฌธ์ฅ์ด๊ธฐ ๋๋ฌธ์, ๋ฐ๋ณต๋ฌธ ์์ ์กฐ๊ฑด๋ฌธ์ ๋ฃ๊ธฐ๋ ํ๊ณ , ์กฐ๊ฑด๋ฌธ ์์ ๋ฐ๋ณต๋ฌธ์ ๋ฃ๊ธฐ๋ ํฉ๋๋ค. ๋ค์ ํ๋ก๊ทธ๋จ์ ์ฃผ์ด์ง ์ ์๊ฐ 10000 ์ดํ์ผ ๋, ๊ทธ ์ ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
#include <stdio.h>
int main()
{
int threshold; scanf("%d", &threshold);
if (threshold > 10000)
printf("given number is too big");
else
for (int num = 2; num <= threshold; ++num)
{
int is_prime = 1, div = 2;
while (div * div <= num)
{
if (num % div == 0)
{
is_prime = 0;
break;
}
++div;
}
if (is_prime)
printf("%d ", num);
}
}
: 100
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
: 20000
given number is too big
2
์ด์ threshold
์ดํ์ ๋ชจ๋ ์ ์ num
์ ๋ํด, 2
์ด์ ๋ฃจํธ num
์ดํ์ ๋ชจ๋ ์ ์ div
์ ๋ํด, ์ num % div == 0
์ด 1
์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉด num
์ ์์๊ฐ ์๋๊ณ , 1
์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉด num
์ ์์๋ผ๊ณ ํ๋จํ๋ ํ๋ก๊ทธ๋จ์
๋๋ค.
์ด๋ ๊ฒ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ์ ์ ์ ํ ํ์ฉํ๋ฉด ๋ค์ํ ๋ฐ๋ณต์ ์ธ ๊ณ์ฐ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ณต๋ฌธ์ ์ฌ๋ฌ๊ฐ ๊ฒน์ณ ์ผ์ ๋, break๋ฌธ์ด ์ด๋ป๊ฒ ์๋ํ๋ ๊ฑด์ง ํ์ ํ ํ์๊ฐ ์์ต๋๋ค.