C์ ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ์์ ๋ํด ๋ฐฐ์๋๋ค.
์ปดํจํฐ(computer)๋ผ๋ ๋จ์ด๋ ์ฌ์ค ๊ณ์ฐ(compute)ํ๋ ๊ธฐ๊ณ๋ผ๋ ๋ง์ ๋๋ค. 2์ฅ์์ ๋ง์๋๋ ธ๋ฏ์ด, ์ปดํจํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ฐ์ฅ์น๋ก ์ด๋ฃจ์ด์ ธ์์ต๋๋ค. ์ด๋ฒ ์ฅ์์ ๊ทธ ์ฐ์ฐ์ฅ์น๊ฐ ์ด๋ค ๊ธฐ๋ณธ ์ฐ์ฐ์ ํ ์ ์๋์ง ์๊ฐํ๊ณ ์ ํฉ๋๋ค.
์ฐ์ฐ์๋ ์ฐ์ฐ์ฅ์น์๊ฒ ์ํ์์ ์ฐ์ฐ์๋ฅผ ์ฐ๋ ๊ฒ๊ณผ ๋น์ทํ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ์ฐ์ ๊ด๋ จ๋ ๋ช
๋ น์ ํ ์ ์๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ฐ์ฐ์ ์ํํ ๊ฐ์ด๋ ์์ ํผ์ฐ์ฐ์(operand)
๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์ด ํผ์ฐ์ฐ์์ ๊ฐ์์ ๋ฐ๋ผ ์ฐ์ฐ์๋ฅผ ๋จํญ ์ฐ์ฐ์(unary operator)
, ์ดํญ ์ฐ์ฐ์(binary operator)
, ์ผํญ ์ฐ์ฐ์(ternary operator)
๋ก ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, 1 + 2
์์ +
๋ ํผ์ฐ์ฐ์๊ฐ 1
๊ณผ 2
๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์, ์ดํญ ์ฐ์ฐ์๊ฐ ๋ฉ๋๋ค.
๋์ ์ฐ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์ฅํ๋ ์ฐ์ฐ์์ ๋๋ค. 2์ฅ์ ์์ฌ ์ฝ๋๋ฅผ ๋ค์ ์๊ธฐํด๋ณด๋๋ก ํฉ์๋ค.
load 2
load 3
add
store 1
์ฌ๊ธฐ์ store
์ ์ญํ ์ ํ๋ ๊ฒ์ด ๋ฐ๋ก ๋์
์ฐ์ฐ์์
๋๋ค. ์ค์ C ์ฝ๋๋ฅผ ํตํด ์์๋ณด๋๋ก ํฉ์๋ค.
int main()
{
int result;
result = 6;
result = 5;
}
์ด ์ฝ๋๊ฐ ์ด๋ค ์ผ์ ํ๋์ง ๊ฐ์ด ์ค์๋์? int
๋ 4๋ฐ์ดํธ๋ฅผ ์ฐจ์งํ๋ ์๋ฃํ์ด๋, result
๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ 20๋ฒ๋ถํฐ 23๋ฒ์ ์ฐจ์งํ๊ณ ์๋ค๊ณ ํด๋ด
์๋ค. ์ด๊ธฐ์์ด ์๊ธฐ ๋๋ฌธ์, int result;
๊น์ง๋ 20~23๋ฒ์ ๋ฌด์์ด ๋ค์ด์๋์ง ์ ์ ์์ต๋๋ค. ๊ทธ ๋ค์ ์ค result = 6;
์ด ์ง๋๋ฉด 20~23๋ฒ์ 6์ด ๋ค์ด์๊ฒ ๋ฉ๋๋ค. ๊ทธ ๋ค์ ์ค result = 5;
๊ฐ ์ง๋๋ฉด 20~23๋ฒ์ 5๊ฐ ๋ค์ด์๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋๊น ์ด ์ฝ๋๋ฅผ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ๋ง์ ๊ฐ๊น๊ฒ ์ฐ๋ฉด
ํ๋ก๊ทธ๋จ์ด ์์ํ์ ๋,
์ ๋นํ ๊ณต๊ฐ์ result๋ผ๊ณ ์ด๋ฆ ์ง์ต๋๋ค.
result๋ผ๋ ์ด๋ฆ์ ๊ณต๊ฐ์ 6์ ๋ฃ์ต๋๋ค.
result๋ผ๋ ์ด๋ฆ์ ๊ณต๊ฐ์ 5๋ฅผ ๋ฃ์ต๋๋ค.
๊ฐ ๋ฉ๋๋ค.
20,21,22,23๋ฒ ๊ฐ๊ฐ์ 6์ด๋ 5๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ๋ ๊ฒ์ ์ฃผ์ํด์ฃผ์ธ์. 4์ฅ์์ ์ค๋ช ํ๋ฏ, int๋ผ๋ ์๋ฃํ์ ๋ ํฐ ์ซ์๋ฅผ ํํํ๊ธฐ ์ํด, 4๋ฐ์ดํธ์ ๊ณต๊ฐ์ ๋ฌถ์ด์ ์ต๋ 32์๋ฆฌ 2์ง์๋ฅผ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์๋ฃํ์ ๋๋ค. ์ฆ, 20~23๋ฒ์ 00000006(16)(2์ง์๋ก 32์๋ฆฌ)์ด ๋ค์ด์๊ธฐ ๋๋ฌธ์, ๋ค ๊ณต๊ฐ ์ค ์ธ ๊ณต๊ฐ์ 0๋ง ๋ค์ด์๊ณ , ๋๋จธ์ง ํ ๊ณต๊ฐ์ 6์ด ๋ค์ด์๊ฒ ๋ฉ๋๋ค. ์ฌ๋ฌ ๊ณต๊ฐ์ ๋ฌถ์ด ํ ์ซ์๋ฅผ ํํํ๋ ๋ฐฉ์์ ๋ํด์๋ ๋์ค์ ์์ธํ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค. ์ง๊ธ์ ์ด๋ค ์๋ฃํ์ ์ฌ๋ฌ ๊ณต๊ฐ์ด ํ๋์ ์ซ์๋ฅผ ํํํ๋๋ก ํ๋ค๋ ์ฌ์ค๋ง ๊ธฐ์ตํด์ฃผ์ธ์.
์์ผ๋ก "๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฌด์์ ๋์ ํ๋ค"๋ ๋ง์ ์ค์ฌ์ "๋ณ์์ ๋ฌด์์ ๋์ ํ๋ค"๋ผ๊ณ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ค์ ๋ก ํ๋ก๊ทธ๋๋จธ๋ค์ด ์ฌ์ฉํ๋ ํํ๋ "๋ณ์์ ๋ฌด์์ ๋์ ํ๋ค"์ ๋๋ค. ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ผ๋ ๋จ์ด๋ฅผ ํจ๊ป ์ฐ๋ ๊ฑด ์ ๊ฐ ์ฌ๋ฌ๋ถ๋ค์ด ๋ฉ๋ชจ๋ฆฌ๋ผ๋ ๊ฐ๋ ์ ์ดํดํ ์ ์๋๋ก ๋ง๋ค์ด๋ธ ํํ์ ๋๋ค.
๋ค์ ์ฐ์ฐ์๋ก ๋์์ต์๋ค. ์ํ์์ =
๋ผ๋ ๊ธฐํธ๋ ์ขํญ๊ณผ ์ฐํญ์ ๊ฐ์ด ๊ฐ๋ค๋ผ๋ ๊ฒ์ ํํํ๋ ๊ธฐํธ์์ต๋๋ค. ํ์ง๋ง C์์ ์ฐํญ์ ํํ์(expression)
์ ๊ฐ์ ์ขํญ์ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ ์ ์ฅํ๋ค๋ ์๋ฏธ์
๋๋ค. ์ด =
๋ผ๋ ๊ธฐํธ๋ฅผ ๋์
์ฐ์ฐ์
๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
์ฐ์ ์ฐ์ฐ์๋ ์ฝ๊ฒ ๋งํด ์ฌ์น์ฐ์ฐ์ ์ํํ๋ ์ฐ์ฐ์์
๋๋ค. C์์ ๋ค์ฏ๊ฐ์ง ์ฐ์ ์ฐ์ฐ์๋ฅผ ์ง์ํ๋๋ฐ์, ๋ง์
์ฐ์ฐ์(+
), ๋บ์
์ฐ์ฐ์(-
), ๊ณฑ์
์ฐ์ฐ์(*
), ๋๋จธ์ง ์ฐ์ฐ์(/
), ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ์ฐ์ฐ์(%
) ๋ค์ฏ๊ฐ์ง์
๋๋ค. /
๊ฐ ๋จ์ํ ๋๋์
์ ์ํํ๋ ๊ฒ์ด ์๋๋ผ, ๋ชซ์ ๊ตฌํ๋ ์ฐ์ฐ์์์ ์ฃผ์ํ ํ์๊ฐ ์์ต๋๋ค. ์์๋ฅผ ๋ณด๋๋ก ํฉ์๋ค.
#include <stdio.h>
int main()
{
int a = 17, b = 6;
int c;
c = a + b;
printf("a + b = %d ", c);
printf("a - b = %d ", a - b);
int d = a * b;
printf("a * b = %d ", d);
printf("a / b = %d ", a / b);
printf("a % b = %d ", a % b);
int e = a * 2;
printf("a * 2 = %d", e);
}
a + b = 23 a - b = 11 a * b = 102 a / b = 2 a % b = 5 a * 2 = 12
์ด ์์ ๋ ๋ง์ ๊ฒ์ ๋ณด์ฌ์ฃผ๋๋ฐ์, ์ฌ๊ธฐ์ ์ ์ ์๋ ๊ฒ์ ์ ๋ฆฌํ๋ฉด,
- C์์ ์ฌ์น์ฐ์ฐ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ์ ์์ต๋๋ค.
c = a + b
๋ฅผ ํตํด ๋์ ์ฐ์ฐ์์ ์ฐํญ์ ๋จ์ํ ๊ฐ์ด ์๋๋ผ ์์ ๋ฃ์ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ ๊ฐ ์ง๊ธ๊น์ง ์ฐํญ์ ๋ค์ด์ฌ ์ ์๋ ๊ฒ์ ๊ฐ(value)์ด ์๋๋ผ ํํ์์ด๋ผ๊ณ ํ๋๋ฐ์, ๋ฐ๋ก ์ด๋ฐ ํน์ง์ ๊ณ ๋ คํ ๊ฒ์ด์์ต๋๋ค.int d = a * b
๋ฅผ ํตํด ๋ณ์๋ฅผ ์ ์ธํ ๋๋ ์ด๊ธฐ์์ ๊ฐ์ด ์๋๋ผ ์์ ๋ฃ์ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.printf("a - b = %d", a - b)
๋ฅผ ํตํดprintf
์๋ ์์ ๋ฃ์ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ C๋ฅผ ๋น๋กฏํ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๊ฐ์ด ๋ค์ด๊ฐ ์๋ฆฌ์ ์๋ ์ง์ด๋ฃ์ ์ ์์ต๋๋ค.- ์๋ฃํ์ด๋ผ๋ ๊ฑด ๋ณ์ ๋ฟ๋ง ์๋๋ผ ๊ฐ์ด๋ ์์๋ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
int
๋ฅผ ์ฌ์น์ฐ์ฐํ ๊ฒฐ๊ณผ๋ ํญ์int
์์ ์ ์ ์์ต๋๋ค.int e = a * 2
๋ฅผ ํตํด ๋ฐ๋๋ก ๋ณ์๊ฐ ๋ค์ด๊ฐ ์๋ฆฌ์ ์ซ์๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ ์์ ๋ ์ ์ ์๋ฃํ์ ๋ํด ์ฐ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๊ฒ์ด์๋๋ฐ์, ๋ถ๋์์์ ์๋ฃํ(float
, double
)์ ๋ํด์ ๋๋์
์ฐ์ฐ์์ ํ๋์ด ๋ฌ๋ผ์ง๋๋ค.
#include <stdio.h>
int main()
{
double a = 17, b = 6;
printf("a / b = %lf", a / b);
}
a / b = 2.833333
์ด๋ ๊ฒ ๋ชซ์ ๊ตฌํ๋ ๊ฒ์ด ์๋๋ผ ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๋ ๋๋์
์ ์ํํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. 17/6
์ ๋ฌดํ์์๋ก ํํ๋๊ธฐ ๋๋ฌธ์, 17/6
์ ๊ฐ๊น์ด ์์๋ฅผ ์ฌ์ฉํ ๊ฒ๋ ์ ์ ์์ต๋๋ค. ๊ทธ๋ผ ๋๋จธ์ง ์ฐ์ฐ์๋ ์ด๋จ๊น์? ๋ค์ ์์ ๋ฅผ Visual Studio์ ์
๋ ฅํด๋ณด์ธ์.
#include <stdio.h>
int main()
{
double a = 17, b = 6;
printf("a % b = %lf", a % b);
}
printf
์์ a
์ b
์ ๋นจ๊ฐ ์ค์ด ๋จ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์ ๋ง์ฐ์ค ํฌ์ธํฐ๋ฅผ ์ฌ๋ฆฌ๋ฉด,
์ด๋ ๊ฒ "expression must have integral type", ์ฆ "ํํ์์ ์๋ฃํ์ด ์ ์ํ์ด์ด์ผ ํฉ๋๋ค"๋ผ๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ด๋ ๊ฒ ๋ฌธ๋ฒ์ ์ผ๋ก ๋ง์ง ์์ C ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ํฐ๊ฐ ์๋ฌ ๋ฉ์์ง์ ํจ๊ป ๋นจ๊ฐ ์ค์ ํ์ํด์ฃผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ฃผ์ฒด๊ฐ ์๋ํฐ์ธ ๊ฒ์ ์ฃผ๋ชฉํด์ฃผ์ธ์. ์ฌ๊ธฐ์ Ctrl + F5๋ฅผ ๋๋ฅด๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
์ด๋ ๊ฒ ์ปดํ์ผ๋ฌ๋ ์๋ฌ ๋ฉ์์ง์ ํจ๊ป ์์ค ์ฝ๋์ ์ด๋๊ฐ ๋ฌธ์ ์ธ์ง ์๋ ค์ฃผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ด๋ฒ์ ์ฃผ์ฒด๊ฐ ์ปดํ์ผ๋ฌ์ธ ๊ฒ์ ์ฃผ๋ชฉํด์ฃผ์ธ์. ์ฌ๊ธฐ์ ๋ฐ์ "Error List"๋ฅผ ๋๋ฅด์๋ฉด ์ด๋ ๊ฒ ์๋ํฐ๊ฐ ์ปดํ์ผ๋ฌ์ ๋ฉ์์ง๋ฅผ ์ ์ ๋ฆฌํด์ ํ์ํด์ฃผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ปดํ์ผ๋ฌ์ ์๋ํฐ๋ฅผ ์ฒ ์ ํ๊ฒ ๊ตฌ๋ถํ๋ ์ด์ ๊ฐ ์๋๋ฐ์, ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ ๊ฒ์ ์์ธ๋ก ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์์ ์ ๋๋ค. ์์ค ์ฝ๋์ ์ค๋ฅ๋ฅผ ์ฐพ์๋ด๊ธฐ ์ํด์ ์ปดํ์ผ์ ์ผ๋ถ ์ํํด์ผํ๊ธฐ ๋๋ฌธ์, ์์ค ์ฝ๋๋ฅผ ์ ๋ ฅํ๊ณ ๋์ ์๋ํฐ๊ฐ ์ค๋ฅ๋ฅผ ํ์ํด ์ค ๋๊น์ง ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ค๊ฐ์ ์๋ํฐ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ฉด ์๋ํฐ๊ฐ ์ค๋ฅ๋ฅผ ํ์ํด์ฃผ์ง ์์ ์๋ ์์ต๋๋ค. ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๊ธฐ ์์ํ๋ ๋ง์ ๋ถ๋ค์ด "๋นจ๊ฐ ์ค์ ์ ๋จ๋๋ฐ ์ ์ค๋ฅ๊ฐ ๋์?"๋ผ๋ ์ง๋ฌธ์ ํ์๋๋ฐ, ๋นจ๊ฐ ์ค์ ํ์ํด์ฃผ๋ ์ฃผ์ฒด์ ์ค์ ์ค๋ฅ์ธ์ง ์๋์ง ํ์ธํด์ค ์ ์๋ ์ฃผ์ฒด๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ ํญ์ ๊ธฐ์ตํด์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๋นจ๊ฐ ์ค์ด ์์ด๋ ์ปดํ์ผ๋ฌ์์ ์ค๋ฅ๊ฐ ๋๋ฉด ์์ค ์ฝ๋์ ์ค๋ฅ๊ฐ ์๋ ๊ฒ์ด๊ณ , ๋นจ๊ฐ ์ค์ด ์์ด๋ ์ปดํ์ผ๋ฌ์์ ์ค๋ฅ๊ฐ ์ ๋๋ฉด ์์ค ์ฝ๋์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ ๋๋ค.
์ปดํ์ผ๋ฌ์ ์ญํ ์ ์์ธํ ์๊ณ ๊ณ์๋ ๋ถ์ ์ํด ๋ถ๊ฐ ์ค๋ช ์ ํ์๋ฉด, ์ปดํ์ผ๊น์ง๋ ๊ด์ฐฎ์๋ฐ ๋งํฌ ๊ณผ์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ปดํ์ผ๋ฌ์ ๋ง์ปค ๊ตฌ๋ถ์ ํจ์๋ฅผ ๋ค๋ฃจ๊ณ ๋์์ผ ํ ์์ ์ ๋๋ค.
๋์ ์ฐ์ฐ์์ ์ํ์์์ ๋ฑํธ๊ฐ ๋ชจ์์ด ๊ฐ์ ํ์, ๋ง์ ๋ถ๋ค์ด ์ข ์ข ๋ค์๊ณผ ๊ฐ์ ์ค์๋ฅผ ์ ์ง๋ฅด์ญ๋๋ค.
int main()
{
int a = 5;
a + 1 = 6;
}
a + 1
์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ ๊ฐ๊ณ ์๋ ๋ณ์๊ฐ ์๋๋๋ค. ๋ฐ๋ผ์ ์ฐํญ์ ๊ฐ์ ์ขํญ์ ๋์
ํ ์ ์์ต๋๋ค.
๋์ ์ฐ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ง์ด๋ฃ๋๋ค๋ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์, ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ์๊ฐํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
int a = 5;
a = a + 1;
a = 2 + a;
printf("%d", a);
}
8
๋จผ์ a
์ 5
๊ฐ ๋์
๋ฉ๋๋ค. a = a + 1
์ ์ํด, ์ฐ์ฐ์ฅ์น๊ฐ a
์์ 5
๋ฅผ ๊บผ๋ด 1
์ ๋ํ ๊ฒฐ๊ณผ์ธ 6
์ ๋ค์ a
์ ์ง์ด๋ฃ์ต๋๋ค. a = 2 + a
๋ ๋ง์ฐฌ๊ฐ์ง๋ก, 2
์ a
์์ ๊บผ๋ธ 6
์ ๋ํ ๊ฒฐ๊ณผ์ธ 8
์ a
์ ์ง์ด๋ฃ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก a
์ 8
์ด ๋ค์ด์๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ ๊ฒฐ๊ณผ๋ 8
์ด ๋ฉ๋๋ค. ํญ์ =
๊ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ค๋ ๊ฐ๋
์์ ๋ช
์ฌํ ํ์๊ฐ ์์ต๋๋ค.
์ํ์์ ํ ์์ ์ฌ๋ฌ ์ฐ์ฐ์๋ฅผ ์์ด์ธ ์ ์๋ฏ์ด, C์์๋ ํ ์์ ์ฌ๋ฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
printf("%d", 1 + 3 * 5);
}
16
์ํ์์ ๊ทธ๋ฐ ๊ฒ์ฒ๋ผ, C์์๋ ์ฐ์ฐ์ ์ฐ์ ์์๊ฐ ์ ์ฉ๋ฉ๋๋ค. *
์ /
, %
๊ฐ +
๋ -
๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ต๋๋ค. ๊ทธ๋์ 1 + 3 * 5
๋ ์ค์ ๋ก 1 + (3 * 5)
๋ก ๋ฒ์ญ๋ฉ๋๋ค. ์ฐ์ ์์์ ๋ฐ๋ฅด์ง ์๊ณ ์ถ์ผ๋ฉด ์ํ์์ ํ๋ ๊ฒ์ฒ๋ผ ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
#include <stdio.h>
int main()
{
printf("%d", (1 + 3) * 5);
}
20
์ํ์์์ ๋ค๋ฅด๊ฒ, C์์ ์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ์ ํ๊ธฐ ์ํด ๊ดํธ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๋๋ผ๋ ํญ์ ์๊ดํธ( )
๋ง์ ์ฌ์ฉํ์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์๋ ์ํ์์
36 / {(1 + 2) * 5}
๋ก ํ๊ธฐํ๋ ๊ฒ๋ 36 / ((1 + 2) * 5)
๋ก ์จ์ผ ํฉ๋๋ค.
#include <stdio.h>
int main()
{
printf("%d", 36 / ((1 + 2) * 5));
}
2
๋์
์ฐ์ฐ์ =
๋ ์ฐ์ฐ์ ์ฐ์ ์์๊ฐ ์๋๋ฐ์, ์ฐ์ ์ฐ์ฐ์๋ณด๋ค ๋ฎ์ ์์๋ฅผ ๊ฐ์ง๋๋ค. ์๊น ๋ณ์์ ๋ง์
์ ๊ฒฐ๊ณผ๋ฅผ ๋์
ํ ๋, c = a + b;
์ฒ๋ผ ์ผ์ต๋๋ค. ์ฌ๊ธฐ์ ์ฐ์ ์์์ ๋ฐ๋ผ ๊ดํธ๋ฅผ ํ์ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? c = (a + b);
๊ฐ ๋์ด ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋๋๋ก ์๋ํ๊ฒ ๋ ๊ฒ์์ ์ ์ ์์ต๋๋ค. =
๊ฐ +
๋ณด๋ค ๋์ ์์๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค๋ฉด (c = a) + b
๊ฐ ๋ ํ
๋ฐ, ํ๋ก๊ทธ๋จ์ด ์ฐ๋ฆฌ๊ฐ ์๋ํ๋๋ก ์๋ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์์ผ๋ก ๋ค์ํ ์ฐ์ฐ์๋ฅผ ๊ณต๋ถํ๊ฒ ๋ ํ
๋ฐ์, C์ ์ ์ฒด ์ฐ์ฐ์ ์ฐ์ ์์๋ ์ฌ๊ธฐ, C++์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
1 + 2 + 3
์ (1 + 2) + 3
์ผ๋ก ํด์ํ๋๊ฒ ๋ง์๊น์, 1 + (2 + 3)
์ผ๋ก ํด์ํ๋๊ฒ ๋ง์๊น์? ๋ง์ฝ ์ด๋ฐ ๋ถ๋ถ์ ํ์ค์์ ๋ค๋ฃจ์ง ์์๋ค๋ฉด ์ปดํ์ผ๋ฌ๋ฅผ ์ ์ํ๋ ํ์ฌ๋ค์ด ์ด ๋ฐฉํฅ์ ์ํ๋๋๋ก ์ ํ์ ๊ฒ์
๋๋ค. ๊ทธ๋ผ ์ด๋์๋ ๋์๊ฐ๋ ์ฝ๋๊ฐ ์ด๋์๋ ๋์๊ฐ์ง ์๊ฒ ๋ ๊ฒ์
๋๋ค. ๊ทธ๋์ C ํ์ค์์ ์ด๋ฐ ๊ฒฝ์ฐ ๊ดํธ๋ฅผ ์ด๋ป๊ฒ ํ์ํด์ผํ๋์ง๋ ์ ํด๋์๋๋ฐ์, ๊ทธ๊ฑธ ์ฐ์ฐ์ ๊ฒฐํฉ๋ฐฉํฅ
์ด๋ผ๊ณ ํฉ๋๋ค. ์ฐ์ฐ์ ๊ฒฐํฉ๋ฐฉํฅ๋ ์์ ๋ ์ฐธ๊ณ ์๋ฃ์ ์ ํ์๋๋ฐ์, ์ง๊ธ๊น์ง ๋ฐฐ์ด ์ฐ์ฐ์๋ค๋ก ์ด๋ฃจ์ด์ง ์์๋ก ๊ฒฐํฉ๋ฐฉํฅ์ ๋ํด ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
#include <stdio.h>
int main()
{
int a = 5, b = 6, c = 7;
a = b = c + 1;
printf("%d %d %d", a, b, c);
}
8 8 7
๋จผ์ ๋ง์
์ฐ์ฐ์๊ฐ ๋์
์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ต๋๋ค. ๊ทธ๋ผ a = b = c + 1
์ a = b = (c + 1)
๋ก ํด์๋ฉ๋๋ค. ๋์
์ฐ์ฐ์๋ ๊ฒฐํฉ๋ฐฉํฅ์ด ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์
๋๋ค. ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ด๋ผ๋ ๊ฒ์ ์ค๋ฅธ์ชฝ์ ์๋ ํผ์ฐ์ฐ์๋ถํฐ ๊ดํธ๋ฅผ ์น๋ค๋ ๊ฒ์
๋๋ค. ์ฆ a = b = (c + 1)
์ a = (b = (c + 1))
์ผ๋ก ํด์๋๋ ๊ฒ์
๋๋ค. ๊ทธ๋ผ ์ผ๋จ b
์ c + 1
์ ๊ฒฐ๊ณผ์ธ 8
์ด ๋์
๋๋ ๊ฒ์ ์์์ต๋๋ค. ๊ทธ๋ผ ์ a
์๋ 8
์ด ๋์
๋๋ ๊ฒ์ผ๊น์? ๊ทธ๊ฑด ๋์
์ฐ์ฐ์์ ๊ฒฐ๊ณผ๊ฐ ๋์
ํ ๊ฐ์ด๋ผ๊ณ ๋ช
์๋์ด์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฆ, b = (c + 1)
์ ๊ฒฐ๊ณผ๋ 8
์ด ๋๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก a = 8
์ด ๋์ด a
์๋ ๊ฐ์ ๊ฐ์ด ๋์
๋๊ฒ ๋ฉ๋๋ค.
๋ฐ๋๋ก ์ฐ์ ์ฐ์ฐ์๋ค์ ๊ฒฐํฉ๋ฐฉํฅ์ด ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์
๋๋ค. ์ฆ ์ผ์ชฝ์ ํผ์ฐ์ฐ์๋ถํฐ ๊ดํธ๋ฅผ ์น๋ค๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด a + b + c
๋ (a + b) + c
๊ฐ ๋ฉ๋๋ค. ๋ง์ฝ ์ฐ์ ์ฐ์ฐ์์ ๊ฒฐํฉ๋ฐฉํฅ์ด ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ด์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? 8 - 4 - 2
์ ๊ฒฐ๊ณผ๋ ์ํ์ ์ผ๋ก 2
์
๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฒฐํฉ๋ฐฉํฅ์ด ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ด๋ฉด 8 - 4 - 2
๋ 8 - (4 - 2)
๊ฐ ๋์ด ๊ฒฐ๊ณผ๊ฐ 6์ด ๋์ด๋ฒ๋ฆฝ๋๋ค. ์ด๊ฑด ์ฌ๋๋ค์ด ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๋ ๊ฒ๊ณผ ๋ค๋ฆ
๋๋ค. ์ด๋ ๊ฒ ์ฐ์ฐ์์ ์ฐ์ ์์์ ์ฐ์ฐ์์ ๊ฒฐํฉ๋ฐฉํฅ์ ์ฌ๋๋ค์ด ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๋๋๋ก ์๋ํ๋๋ก ์ค์ ๋์ด์์ต๋๋ค.
์์์ ๋ณ์ ๋์ ์ ๊ฐ์ ์ฌ์ฉํด๋ ๋๋ค๋ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์๊น ๋ถ๋์์์ ์๋ฃํ ๋ณ์ ๋ ๊ฐ์ ๋๋์ ์ ํ๋ ์์ ๋ฅผ ๋ด ์๋ค.
#include <stdio.h>
int main()
{
double a = 17, b = 6;
printf("a / b = %lf", a / b);
}
๊ทธ๋ผ a / b ๋์ ์ 17 / 6์ ์ฌ์ฉํด๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋ค์.
#include <stdio.h>
int main()
{
printf("a / b = %lf", 17 / 6);
}
ํ์ง๋ง ์ด ์์ ๋ฅผ ์ค์ ๋ก ์คํํ๋ฉด ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ต๋๋ค. ์ ๊ทธ๋ด๊น์? 17๊ณผ 6 ์์ ๋ง์ฐ์ค ํฌ์ธํฐ๋ฅผ ์ฌ๋ ค๋์์ฃผ์ธ์.
์ด๋ ๊ฒ 17
๊ณผ 6
์ ์๋ฃํ์ด int
์ธ ๊ฒ์ ์๋ ค์ฃผ๊ณ ์์ต๋๋ค. ์ฆ, ์ฌ๊ธฐ์ 17 / 6
์ int
๋ผ๋ฆฌ์ ๋๋์
์ ํ๊ธฐ ๋๋ฌธ์, ๊ฒฐ๊ณผ๋ int
๊ฐ ๋์ด, ์๋ชป๋ ํ์ ์ง์ ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ด ๋ฉ๋๋ค.
4์ฅ์์ ๋ณ์์ ๋ํด ๋ค๋ฃฐ ๋ ์ด๊ธฐ์์ด ์์ผ๋ฉด ๋ณ์์ ์ด๋ค ๊ฐ์ด ๋ค์ด์๋์ง ์ ์ ์๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ํ ์ ์ด ์๋๋ฐ์, ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ๊ฒฝ์ฐ์๋ ๋ฌด์์ด ์ถ๋ ฅ๋ ์ง ์ ์ ์์ต๋๋ค. ์ด๊ฑด C ํ์ค์์, ์๋ชป๋ ํ์ ์ง์ ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, printf๊ฐ ์ด๋ป๊ฒ ์๋ํด์ผํ๋์ง ์ ํด๋์ง ์์๊ธฐ ๋๋ฌธ์, ์ปดํ์ผ๋ฌ์ ๋ฐ๋ผ ์ ์๋ํ ์๋ ์๊ณ , ๊ทธ๋ ์ง ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ ๊ฒ ํน์ ๊ฒฝ์ฐ์ ์ด๋ค ๊ธฐ๋ฅ์ด ์ด๋ป๊ฒ ๋์๊ฐ์ง ์ ํด๋์ง ์์ ๊ฒ์
์ ์๋์ง ์์ ํ๋(undefined behavior)
๋ผ๊ณ ํฉ๋๋ค. ์ด๊ธฐ์์ ๋ฃ์ง ์์๊ฑฐ๋ ๊ฐ์ ๋์ ํ์ง ์์ ๋ณ์์ ๊ฐ์ ์ถ๋ ฅํ๋ ๊ฒ๋ undefined behavior์ ์ผ์ข ์ ๋๋ค.
๊ทธ๋์ ์๋ฃํ์ด int
๊ฐ ์๋๋ผ double
์ธ ์ซ์๋ฅผ ์ ๊ธฐ ์ํด์ ์์์ ์ ํจ๊ป ์ ์ด์ผ ํฉ๋๋ค.
#include <stdio.h>
int main()
{
printf("a / b = %lf", 17.0 / 6.0);
}
a / b = 2.833333
์๊น ํ๋ ๊ฒ ์ฒ๋ผ 17.0
๊ณผ 6.0
์์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ์๋ฃํ์ด double
์ด ๋๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ int
๋ double
๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์๋ฃํ์ ๊ฐ์ง ์ซ์๋ ๋ง๋ค ์ ์์ต๋๋ค.
์๋ฃํ | ์์ | ์ค๋ช |
---|---|---|
float |
1.0f |
์์ ๋ค์ f๋ฅผ ๋ถ์ ๋๋ค. |
long |
17l |
์ ์ ๋ค์ l์ ๋ถ์ ๋๋ค. |
long long |
23ll |
์ ์ ๋ค์ ll์ ๋ถ์ ๋๋ค. |
unsigned |
39u |
์ ์ ๋ค์ u๋ฅผ ๋ถ์ ๋๋ค. |
unsigned long |
28ul |
์ ์ ๋ค์ ul์ ๋ถ์ ๋๋ค. |
unsigned long long |
28ull |
์ ์ ๋ค์ ull์ ๋ถ์ ๋๋ค. |
#include <stdio.h>
int main()
{
printf("%d %f %llu %lf", 20, 1.0f, 28ull, 2.5);
}
20 1.000000 28 2.500000
์ด๋ ๊ฒ ๋ณ์์ ์ ์ฅ๋์ง๋ ์์์ง๋ง ์์ด ๋ค์ด๊ฐ๋ ์๋ฆฌ์ ๋ฐ๋ก ๋ฃ์ ๊ฐ์ ๋ฆฌํฐ๋ด
์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์์ ์์๋ ๋ชจ๋ 10์ง์ ๋ฆฌํฐ๋ด์ธ๋ฐ์, 2์ง์, 8์ง์, 16์ง์ ๋ฆฌํฐ๋ด๋ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
short s = 0b10010;
printf("%hd %u %lld", s, 024u, 0x234ll);
}
18 20 564
์ด๋ ๊ฒ 0b
๋ก ์์ํ๋ ์ซ์๋ 2์ง์, 0
์ผ๋ก ์์ํ๋ ์ซ์๋ 8์ง์, 0x
์ผ๋ก ์์ํ๋ ์ซ์๋ 16์ง์๊ฐ ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ์์์ ๋ค๋ค๋ ๊ฒ ์ฒ๋ผ u
๋ l
๊ฐ์ ๊ฒ์ ๋ถ์ฌ ์๋ฃํ์ ์ง์ ํ ์ ์์ต๋๋ค.
์ง๊ธ์ ์ซ์์ ๋ฆฌํฐ๋ด๋ง์ ๋ค๋ค์ง๋ง, ๋์ค์ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฆฌํฐ๋ด๋ ๋์ฌ ์์ ์ ๋๋ค.
literal
์๋ง ๊ทธ๋๋ก์
๋ผ๋ ๋ป์ ํ์ฉ์ฌ์ ๋๋ค.
์๊น 17
๊ณผ 6
์์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์ ๋, (int)17
์ด๋ผ๊ณ ๋ฌ ๊ฒ์ ๋ณด์ค ์ ์์์ ๊ฒ๋๋ค. ์ด (int)
๋ผ๋ ํ์๋ ๋จ์ํ ์๋ํฐ์์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์๋๋ผ, ์ ํจํ C์ ์ฐ์ฐ์ ์ค ํ๋์
๋๋ค. ํ๋ณํ(ๅ่ฎๆ) ์ฐ์ฐ์๋ผ๋ ์ด๋ฆ์์ ์์์ฐจ๋ฆฐ ๋ถ๋ ๊ณ์๊ฒ ์ง๋ง, ํ๋ณํ ์ฐ์ฐ์๋ ์ด๋ค ์์ ์๋ฃํ์ ๋ค๋ฅธ ์๋ฃํ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ธฐ๋ฅ์ ํฉ๋๋ค. ํ๋ณํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ด๋ ต์ง ์์ต๋๋ค.
(<์๋ฃํ>)<์>
์ฌ์ฉ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#include <stdio.h>
int main()
{
printf("%lf, %d", (double)17, (int)(17.0 + 8.0));
}
17.000000, 25
์ด๋ ๊ฒ ๊ฒฐ๊ณผ๊ฐ int
์ธ ์์ double
๋ก, double
์ธ ์์ int
๋ก ๋ณํํ ์ ์์ต๋๋ค. ํ๋ณํ ์ฐ์ฐ์๋ ์ฐ์ ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๊ณ , ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ๊ฒฐํฉํฉ๋๋ค. ์ฆ, (int)17.0 + 8.0
์ ((int)17.0) + 8.0
์ผ๋ก ํด์๋๊ณ , (double)(int)7.5
๋ (double)((int)7.5)
๋ก ํด์๋ฉ๋๋ค.
์ฐ์ฐ์ ์ ์์ ๋ ํญ์ ์๋ฃํ์ด ์๋ก ๋ค๋ฅด๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์๋ฅผ ๋ค์ด์, 5.0 / 2
๋ ์ฐ์ฐ์ /
์ ์์ double
๊ณผ int
๊ฐ ์์ต๋๋ค. ์ด ๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋๋๋ก 2.5
๊ฐ ๋ ๊น์, ์๋๋ฉด ์ ์์ ๋๋์
์ฒ๋ผ ์ฒ๋ฆฌ๋์ด 2
๊ฐ ๋ ๊น์, ์๋๋ฉด ์๊น ์ ์ฒ๋ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊น์? ๋ง์ฝ ์ฐ์ฐ์์ ๋ ํผ์ฐ์ฐ์์ ์๋ฃํ์ด ๋ค๋ฅด๋ค๊ณ ํด์ ํญ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ํ๋ค๊ฒ์
๋๋ค. ๊ทธ๋์ 5.0 / 2
์ ๊ฒฝ์ฐ, int
์ธ 2
๊ฐ double
๋ก ํ๋ณํ๋์ด ๊ฒฐ๊ณผ๊ฐ double
์ด ๋ฉ๋๋ค.
#include <stdio.h>
int main()
{
double d = 5.0;
int i = 2;
printf("%lf", d / i);
}
2.5
๊ทธ๋ผ ์ค์์ ์ ์ ๋ง๊ณ ์ ์์ ์ ์ ์๋ฃํ์ธ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ๋ ๊น์? unsigned short s = 65535;
์ unsigned i = 1;
๊ฐ ์์ ๋, s + i
์ ๊ฒฐ๊ณผ๋ ์ด๋ป๊ฒ ๋ ๊น์? ์ผ๋จ ์ํ์ ์ผ๋ก ๋ง์
์ ๊ฒฐ๊ณผ๊ฐ 65536์ธ ๊ฑด ํ์คํฉ๋๋ค. ๋ง์ฝ i
๊ฐ ์์์ ์ผ๋ก unsigned short
๋ก ๋ณํ๋์๋ค๋ฉด, ๊ทธ๋ผ ๊ฐ์ด 65536์ธ unsigned short
๊ฐ ๋๋๋ฐ, unsigned short
๋ 0๋ถํฐ 65535(2ยนโถ - 1)๊น์ง๋ง ํํํ ์ ์๋ ์๋ฃํ์
๋๋ค. ๊ทธ๋ฌ๋๊น ํํํ ์ ์๋ ์ซ์๊ฐ ๊ฒฐ๊ณผ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋์ ์ด ๊ฒฝ์ฐ์ s
๊ฐ unsigned
๋ก ํ๋ณํ๋๋ ๊ฒ์ด ๋ ๋ง์๋ณด์
๋๋ค. ๊ทธ๋์ ์ด๋ ๊ฒ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด์ง๋ง ๋ ๋ค unsigned
์ด๊ฑฐ๋ ๋ ๋ค signed
์ผ ๊ฒฝ์ฐ ๋ ์ค์ ํฌ๊ธฐ๊ฐ ๋ ํฐ ์๋ฃํ์ผ๋ก ํ๋ณํ๋๊ฒ ๋ฉ๋๋ค.
#include <stdio.h>
int main()
{
unsigned short s = 65535;
unsigned i = 1;
printf("%u", s + i);
}
65536
์ด๋ ๊ฒ ํ๋ณํ ์ฐ์ฐ์๋ฅผ ํตํด ๋ช
์์ ์ผ๋ก ํ๋ณํ์ ํ์ง๋ ์์์ง๋ง ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ํ๋ณํ์ ํด์ฃผ๋ ๊ฒ์ ์์์ ํ๋ณํ(implicit conversion)
์ด๋ผ๊ณ ํฉ๋๋ค.
์ด์ธ์๋
- ๋ ์ค์ ํ๋๊ฐ
unsigned
์ด๊ณ ๋๋จธ์ง ํ๋๊ฐsigned
์ผ ๋,unsigned
์ธ ์ชฝ์ ํฌ๊ธฐ๊ฐ ๋ ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉดsigned
์ชฝ์ด ๋๋จธ์ง ํ๋์ ์๋ฃํ์ผ๋ก ์์์ ํ๋ณํ- ๋ ์ค์ ํ๋๊ฐ
unsigned
์ด๊ณ ๋๋จธ์ง ํ๋๊ฐsigned
์ผ ๋,unsigned
์ธ ์ชฝ์ ํฌ๊ธฐ๊ฐ ๋ ์์ผ๋ฉดunsigned
์ชฝ์ด ๋๋จธ์ง ํ๋์ ์๋ฃํ์ผ๋ก ์์์ ํ๋ณํ๋๋ค๋ ๊ท์น์ด ์์ต๋๋ค. ๊ท์น์ด ๋ง์ด ๋ณต์กํ๋ค๊ณ ๋๋ผ์ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋์ Java๊ฐ์ ์ธ์ด์
unsigned
์ ์ํ์ด ์กด์ฌํ์ง ์์ต๋๋ค. ์ด๋ค ํ๋ก๊ทธ๋๋จธ๋ค์unsigned
๊ฐ ์์ด๋ ์ฐ์ง ์๋๊ฒ ์ข๋ค๊ณ ๋งํ๊ณ ์. ๊ทธ๋์ ์ฌ๋งํ๋ฉดunsigned
๋ฅผ ์ฐ์ง ๋ง๊ณ , ์ ๋ง ์์๊ฐ ๋ ์ผ์ด ์์ ๋์๋ง ์ฐ๋ ๊ฒ์ด ํ๋ช ํ ๊ฒ ๊ฐ์ต๋๋ค.
7.5
๋ฅผ int
๋ก ํ๋ณํํ๊ฒ ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? int
๋ ์ ์ ์๋ฃํ์ด๊ธฐ ๋๋ฌธ์, ์์์ ์ ํํํ ์ ์์ต๋๋ค. ๊ทธ๋์ (int)7.5
๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด, 7
๋ก ๋ณํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
printf("%lf %d", (double)(int)7.5, (int)7.5);
}
7.000000 7
์ด๋ ๊ฒ ์ผ๋ถ ์๋ฃ๊ฐ ์์ค๋ ์ง๋ ๋ชจ๋ฅด๋ ํ๋ณํ์ ์ถ์ ๋ณํ(narrowing conversion)
์ด๋ผ๊ณ ํฉ๋๋ค. ์ถ์ ๋ณํ์ ์ ๋ ๊ฒ ๋ช
์์ ์ผ๋ก ํ ์๋ ์์ง๋ง, ๋ค์๊ณผ ๊ฐ์ด ์์์ ์ผ๋ก๋ ํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
int i = 7.5;
printf("%d", i);
}
7
์ด๋ฐ ์์์ ์ถ์ ๋ณํ์ ๋ฒ๊ทธ์ ์์ธ์ด ๋๋๋ฐ์, ์๋ฅผ ๋ค์ด ์ด๋ค ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ double
๋ก ์จ์ผํ๋ ๊ฑธ int
๋ก ์ผ์ ๋ ๊ทธ ํ๋ก๊ทธ๋จ์ ์ฌ๊ฐํ ์ค๋ฅ๋ฅผ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋์ ์์ฆ ๋์ค๋ ์ปดํ์ผ๋ฌ๋ค์ ์ด๋ ๊ฒ ์์์ ํ๋ณํ์ด ๋ฐ์ํ ๊ฒฝ์ฐ,
์ด๋ ๊ฒ ์ค๋ฅ๋ ์๋์ง๋ง ๊ฒฝ๊ณ ๋ฅผ ๋์์ค๋๋ค.
๊ฒฝ๊ณ (warning)
๋ผ๋ ๊ฑด ์ฝ๋๋ฅผ ์ปดํ์ผํ ์๋ ์์ง๋ง ์ฝ๋๊ฐ ์ข์ง ์์์ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค.์ค๋ฅ(error)
๊ฐ ๋ฐ์ํ๋ฉด ํญ์ ์ฝ๋๋ฅผ ์ปดํ์ผํ ์ ์๋ ๊ฒ๊ณผ๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ปดํ์ผ๋ฌ์ ๊ธฐ๋ฅ ์ค์๋ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ์ค๋ฅ๋ก ์ทจ๊ธํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ถ์ ๋ณํ์ด ํ์ํ ๋, ํ๋ก๊ทธ๋๋จธ๊ฐ ํญ์ ๋ช ์์ ์ผ๋ก ํ์ํ๋๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
int i = (int)7.5;
printf("%d", i);
}
7
๋ค์ ์์ ๋ฅผ ์ ๋ด์ฃผ์ธ์.
#include <stdio.h>
int main()
{
unsigned short i = 65535, j = 1, k = 0;
printf("%hu %hu", i + j, k - j);
}
์ด ์์ ์ ๊ฒฐ๊ณผ๋ ๋๋๊ฒ๋
0 65535
์
๋๋ค. 65535+1
์ ๊ฒฐ๊ณผ๊ฐ 65536
์ด๊ณ , 0-1
์ ๊ฒฐ๊ณผ๊ฐ -1
์์ ์ฐ๋ฆฌ๋ ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ปดํจํฐ๋ ์ 0
๊ณผ 65535
๋ผ๊ณ ํ ๊น์? 65536
๊ณผ -1
์ด unsigned short
๊ฐ ํํํ ์ ์๋ ๋ฒ์๊ฐ ์๋๋ผ๋ ๊ฒ์ ์ฃผ๋ชฉํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒ ๊ฒฐ๊ณผ๊ฐ ํํํ ์ ์๋ ์ต๋๊ฐ์ ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐ์ ์ค๋ฒํ๋ก(arithmetic overflow)
๋ผ๊ณ ํ๊ณ , ์ต์๊ฐ์ ๋ชป ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐ์ ์ธ๋ํ๋ก(arithmetic underflow)
๋ผ๊ณ ํฉ๋๋ค. ์ด ์์ ์ ๊ฒฐ๊ณผ๊ฐ ์ ์ ๋ ๊ฒ ๋์ค๋์ง๋ 4์ฅ์์ ์ธ๊ธํ 2์ ๋ณด์๋ฅผ ๋ค๋ฃจ๋ฉด์ ํจ๊ป ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ง๊ธ๊น์ง์ ์ฝ๋์ ์ด์ํ ์ ์ด ์ฌ์ค ํ๋ ๋ ์์ต๋๋ค. ์ ๊ฐ ๋์ด์ฐ๊ธฐ๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ค๋ ์๊ฐ์ ๋ค์ง ์์ผ์
จ๋์? ์๋ฅผ ๋ค์ด, 1+2
๋ผ๊ณ ํํํ ์ ์๋ ๊ฒ์ ๊ตณ์ด 1 + 2
์ฒ๋ผ ๊ตณ์ด ์ฌ์ด์ ๋์ด์ฐ๊ธฐ๋ฅผ ๋ฃ์ด์ ์ผ์ต๋๋ค. ์ฌ์ค ๋งจ ์ฒ์ ๋ณ์ ์ ์ธ์ ๋ํด ์ค๋ช
ํ์ ๋ int i = 5
์ฒ๋ผ =
์ฌ์ด๋ฅผ ๋์ด๋ฒ๋ฆฐ ๋ฐ๋์ ์ดํ ์์ ์์ ๋์ด์ฐ๊ธฐ๋ฅผ ํ๋ค๊ฐ ์ ํ๋ฉด ์ฌ๋ฌ๋ถ์ ํผ๋์ํฌ ์ ์๋ค๋ ์๊ฐ์ด ๋ค์ด ๊ณ์ ๋์ด์ฐ๊ธฐ๋ฅผ ์ด ๊ฑด๋ฐ์, ์ฌ์ค ๋์ด์ฐ๊ธฐ๋ฅผ ํ์ง ์์๋ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์จ๋ ์๊ด์ด ์์ต๋๋ค.
#include <stdio.h>
int main(){int i=5;printf("%d",i);}
์ด๋ ๊ฒ ์คํ์ด์ค๋ ์ ๋ฃ๊ณ , ์ค๋ฐ๊ฟ์ ํ์ง ์์๋ ๋ฉ๋๋ค. #include
๊ฐ ๋ค์ด๊ฐ์๋ ์ค์ ์์ธ์
๋๋ค. ์ด๊ฑด ๋์ค์ ์ปดํ์ผ์ ๋ํด ์์ธํ ๋ฐฐ์ธ ๋ ์ด์ ๋ฅผ ์ค๋ช
ํ๊ฒ ์ต๋๋ค. ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์จ๋ ๋๋์ง์ ๋ํด ์ค๋ช
ํ๊ธฐ ์ํด์ ํ ํฐํ๋ผ๋ ๊ณผ์ ์ ๋ํด ์ค๋ช
ํ ํ์๊ฐ ์์ต๋๋ค. ๋จผ์ , ํ๊ตญ์ด์ ๋ฌธ์ฅ์ ํด์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ถํฐ ์๊ฐํด๋ณด๊ฒ ์ต๋๋ค.
๋๋ ์ค๋ ์์์ ์ ๊ฐ์ ๋ง์๋ ๊ณ ๊ธฐ๋ฅผ ๋จน์๋ค.
์ด ๋ฌธ์ฅ์ ํด์ํ๊ธฐ ์ํด์ ๊ฐ์ฅ ๋จผ์ ๋จ์ด ๋จ์๋ก ๋ถ๋ฆฌํด์ผํฉ๋๋ค.
๋/๋/์ค๋/์์์ /์/๊ฐ์/๋ง์๋/๊ณ ๊ธฐ/๋ฅผ/๋จน์๋ค
์ด ๋ค์์ ๋จ์ด๋ฅผ ํํ์๋ ์ ์ฌ๋ก ๋ถ๋ฆฌํ๋ ๊ณผ์ ์ด ์๊ฒ ์ต๋๋ค.
C๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ C ์ฝ๋๋ฅผ ๋ถ์ํ ๋ ๋จผ์ ์ฝ๋๋ฅผ ํ ํฐ(token)
์ด๋ผ๋ ๋จ์๋ก ๋๋๋ ์์
์ ๋จผ์ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํ ํฐํ(tokenization)
์ด๋ผ๊ณ ๋ ํ๊ณ lexical analysis
๋ผ๊ณ ๋ ํฉ๋๋ค. ๊ทธ๋์ ์์ C ์ฝ๋๋ฅผ ํ ํฐํ ํ๋ฉด
int
, main
, (
, )
, {
, int
, i
, =
, 5
, ;
, printf
, (
, "%d"
, ,
, i
, )
, ;
, }
์ด๋ ๊ฒ ๋ถ๋ฆฌ๋ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ์ ์๋ ๊ฒ์ ๋์ด์ฐ๊ธฐ๋ ์ค๋ฐ๊ฟ์ ์ด ํ ํฐ๋ค์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์ฉ๋๋ก๋ง ์ฐ์ธ๋ค๋ ๊ฒ์
๋๋ค. ์ฆ ๋ช ์นธ์ ๋๋ ์ ํ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด ํ ํฐ๋ค์ ์ด๋ป๊ฒ ์ ๋ ฌํ๋๋์ ๋ฐ๋ผ ๊ทธ ์ฌ๋์ ์ฝ๋ฉ ์คํ์ผ์ด ๋ฌ๋ผ์ง๋๋ค. ์ ์ง๊ธ๊น์ง ์ค๊ดํธ{
๋ฅผ int main()
์ ์๋์ ๋ถ์์ง๋ง, ์์ ๋ถ์ด๋ ๊ฒ์ด ๋ ์ผ๋ฐ์ ์
๋๋ค.
int main() {
int i = 0;
}
๋ ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ 4์นธ์ผ๋ก ์ผ์ง๋ง, ๊ตฌ๊ธ์์ 2์นธ์ผ๋ก ์๋๋ค.
#include <stdio.h>
int main() {
printf("Hello, world!");
}
์ค๊ดํธ๋ฅผ ์๋์ ๋ถ์ด๋ ๊ฒ์ด๋, ๋ค์ฌ์ฐ๊ธฐ๋ฅผ 4์นธ์ผ๋ก ํ๋ ๊ฒ ๋ชจ๋ ๋ง์ดํฌ๋ก์ํํธ์์ ๋ง๋ C#์ด๋ผ๋ ์ธ์ด์ ์คํ์ผ์ ๋๋ค. ์ ๊ฐ C# ์คํ์ผ์ ๋ฐ๋ผ๊ฐ๋ ๊ฒฝํฅ์ด ์์ง๋ง, ์ฌ๋ฌ๋ถ์ ์ฌ๋ฌ๋ถ์๊ฒ ๋ง๋ ์คํ์ผ์ ์ฐพ์ผ์๋ฉด ๋ฉ๋๋ค. ์ฌ๋ฌ ์ฝ๋ฉ ์คํ์ผ๋ค์ ๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด, ์ด ์ํคํผ๋์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์. ์ด๋ค ์คํ์ผ์ด๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฝ๊ธฐ ํธํ๊ฒ ์ ๋ ฌํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข๊ณ , ์ฌ๋ฌ๋ถ์ด ์ด๋ค ํ์ฌ๋ ๊ธฐ๊ด์์ ์ผํ๊ฒ ๋๋ค๋ฉด, ๊ทธ ๊ณณ์ ์ฝ๋ฉ ์คํ์ผ์ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
์ธ๋ฏธ์ฝ๋ก ์ ํ๋์ ๋ฌธ์ฅ(statement)
์ ์์ฑํ๋ ์ญํ ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, a = 1
์ 1
์ a
์ ๋์
ํ ํ ๊ฒฐ๊ณผ๊ฐ 1
์ด ๋๋ ์(expression)
์
๋๋ค. ์ด ์์ ๋ค๋ฅธ ๊ณณ์ ๋ฃ์ด printf("%d", a = 1)
๊ฐ์ด ์๋ก์ด ์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ํ์ง๋ง int main() { ... }
์์๋ ํญ์ ์์ด ์๋๋ผ ๋ฌธ์ฅ์ด ๋ค์ด๊ฐ์ผ ํฉ๋๋ค. ์ธ๋ฏธ์ฝ๋ก ์ ํ๋์ ์์ ๋ฌธ์ฅ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ฆ, <์>;
์ ํ๋์ ๋ฌธ์ฅ์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, "Hello, "
๋ฅผ ์ถ๋ ฅํ ํ "world!"
๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ถ๋ ฅ์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ printf("Hello, ")
์ printf("world!")
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋์ ์ธ๋ฏธ์ฝ๋ก ์์ด ๋ถ์ด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋๋ค.
#include <stdio.h>
int main()
{
printf("Hello, ") printf("world!")
}
๊ทธ๋ฐ๋ฐ, ์ printf("Hello, ")
์ ์ printf("world!")
๋ฅผ ๋ถ์ฌ์ค ์ฐ์ฐ์๊ฐ ์๊ณ , int main() { ... }
์์์ ์์ ์ธ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ด ์ฝ๋๋ ์ ํจํ ์ฝ๋๊ฐ ์๋๋๋ค. ์ด ๋์ ๋ฌธ์ฅ์ผ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ฌ์ค๋๋ค.
#include <stdio.h>
int main()
{
printf("Hello, "); printf("world!");
}
Hello, world!
์ธ๋ฏธ์ฝ๋ก ํผ์์ ๋ฌธ์ฅ์ ํ๋ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด,
int i = 5;;
๋ ๋ฌธ์ฅ์ดint i = 5;
,;
๋ก ๋ ๊ฐ ์ ๋๋ค. ์ด๋ฐ ๋ฌธ์ฅ์๋น ๋ฌธ์ฅ(null statement)
์ด๋ผ๊ณ ํฉ๋๋ค.
C ์ฝ๋๋ฅผ ์์ฑํ๋ค ๋ณด๋ฉด a = a + 2
๋, b = b / 3
์ฒ๋ผ ์ด๋ค ํ ๋ณ์๋ก ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๊ทธ ๋ณ์์ ์ง์ด๋ฃ๊ฒ ๋ ์ผ์ด ์๊น๋๋ค. ๊ทธ๋ฐ๋ฐ, ๋ณ์์ ์ด๋ฆ์ด my_special_variable
์ฒ๋ผ ๊ธธ๊ฒ ๋๋ฉด ์ ๋ฐ ์์ ์ฐ๊ธฐ ํ๋ค์ด์ง๋๋ค. ๊ทธ๋์ C์ธ์ด์์ ์ด๋ฐ ๊ฒฝ์ฐ, ์ฝ๋๋ฅผ ๋ ์งง๊ฒ ์ฐ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ์, ์ด ๋ ๋ณตํฉ ๋์
์ฐ์ฐ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ด๋ ต์ง ์์ต๋๋ค. ์ดํญ ์ฐ์ฐ์ @
์ ๋ํด, a = a @ b
๊ฐ a @= b
๋ก ๋ฐ๋๋ ๊ฒ๋๋ค. ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#include <stdio.h>
int main()
{
int a = 5;
printf("%d ", a);
a += 2;
printf("%d ", a);
a -= 1;
printf("%d ", a);
a *= 5;
printf("%d ", a);
a /= 6;
printf("%d ", a);
a %= 2;
printf("%d", a);
}
5 7 6 30 5 1
์๋ a
๋ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ด 5
์๋๋ฐ, ๊ฑฐ๊ธฐ์ 2
๊ฐ ๋ํด์ ธ 7
์ด ๋๊ณ , 1
์ด ๋น ์ ธ 6
์ด ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 5
๋ฅผ ๊ณฑํด์ ธ 30
์ด ๋๊ณ , 6
์ผ๋ก ๋๋์ด์ ธ 5
๊ฐ ๋์๋ค์. ๋ง์ง๋ง์ผ๋ก 2
๋ก ๋๋ ๋๋จธ์ง์ธ 1
์ด a
์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค. ๋ณตํฉ ๋์
์ฐ์ฐ์๊ฐ ์์๋ค๋ฉด ์์ ์์ ๋ ์๋์ฒ๋ผ ์ฐ๊ฒ ๋ ๊ฒ์
๋๋ค. (printf
๋ ์ ์ธํ์ต๋๋ค.)
int main()
{
int a = 5;
a = a + 2;
a = a - 1;
a = a * 5;
a = a / 6;
a = a % 2;
}
์์ ์๋๋ฅผ ๋น๊ตํ์ ๋, ์๊ฐ ํจ์ฌ ๊ฐ๋จํ ๊ฒ์ ์ ์ ์์ต๋๋ค.
C์์ ์ด๋ค ๋ณ์์ ๋ฌด์ธ๊ฐ ๋ํ๊ฑฐ๋ ๋บ ์ผ์ด ์๋ค๋ฉด, 1์ ๋ํ๊ฑฐ๋ ๋บ ์ผ์ด ๊ฐ์ฅ ๋ง์ต๋๋ค. ๊ทธ๋์ C์์ 1์ ๋ํ๊ณ ๋นผ๋ ์ฐ์ฐ์๋ ๋ฐ๋ก ์์ต๋๋ค. ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#include <stdio.h>
int main()
{
int a = 5;
printf("%d ", a);
++a;
printf("%d ", a);
a++;
printf("%d ", a);
--a;
printf("%d ", a);
a--;
printf("%d", a);
}
5 6 7 6 5
++
์ ์ฌ์ฉํ๋ฉด 1 ์ฆ๊ฐํ๊ณ , --
์ ์ฌ์ฉํ๋ฉด 1 ๊ฐ์ํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ด ๋ ++
์ ์ฆ๊ฐ ์ฐ์ฐ์(increment operator)
, --
์ ๊ฐ์ ์ฐ์ฐ์(decrement operator)
๋ผ๊ณ ๋ถ๋ฅด๊ณ , ๋์ ํฉ์ณ์ ํ๊ตญ์ด๋ก ์ฆ๊ฐ์ฐ์ฐ์
๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ํนํ ๋ณ์์ ์์ ์จ ์ฆ๊ฐ์ฐ์ฐ์๋ฅผ ์ ์ ์ฆ๊ฐ ์ฐ์ฐ์(prefix increment/decrement operator)
๋ผ๊ณ ํ๊ณ , ๋ค์ ์จ ๊ฒ์ ํ์ ์ฆ๊ฐ ์ฐ์ฐ์(postfix increment/decrement operator)
๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์ ์ ์ฆ๊ฐ ์ฐ์ฐ์์ ํ์ ์ฆ๊ฐ ์ฐ์ฐ์์ ์ฐจ์ด๋ 1์ด ์ฆ๊ฐํ๊ฑฐ๋ ๊ฐ์ํ๋ ์์ ์ ์์ต๋๋ค.
#include <stdio.h>
int main()
{
int a = 5;
printf("%d ", a);
printf("%d ", ++a);
printf("%d ", a++);
printf("%d", a);
}
5 6 6 7
์ธ๋ฒ์งธ printf
์์์๋ a
์ ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ์ทจํด์คฌ์์๋ ๋ถ๊ตฌํ๊ณ , ์ฆ๊ฐ๋์ง ์์ ๊ฐ์ด ๋์จ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํ์ ์ฆ๊ฐ ์ฐ์ฐ์๋ ์ฐ์ฐ์๋ฅผ ์ทจํ ๋ณ์์ ๊ฐ์ด ๊ทธ ๋ฌธ์ฅ์ด ๋๋ ์งํ์ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค์ ๋งํด, ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
<a์ ์ ์ ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์>;
->
a += 1;
<a๋ฅผ ์ฌ์ฉํ ์>;
<a์ ํ์ ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์>;
->
<a๋ฅผ ์ฌ์ฉํ ์>;
a += 1;
์ฆ๊ฐ์ฐ์ฐ์๋ ์ฌ์ฉํ๊ธฐ ๊ฐํธํ๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ํ ๋ฌธ์ฅ ๋ด์์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฝ๊ธฐ ํ๋ค์ด์ง๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ๊ทธ๋์ ์ฆ๊ฐ์ฐ์ฐ์๋ ์ ์ ํ ํ์๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋, ํ ๋ฌธ์ฅ ๋ด์์ ๊ฐ์ ๋ณ์์ ๋ํด ์ฆ๊ฐ์ฐ์ฐ์๋ฅผ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์๋์ง ์์ ํ๋์ ๋๋ค.