C언어 사칙연산 기호 - Ceon-eo sachig-yeonsan giho

C언어에서 산술 연산자는 사칙연산과 나머지(% )구하기를 말합니다. 나눗셈의 경우 정수에서 정수를 나눠도 실수인 답이 있으므로 자료형 선택에 유의해야 합니다.

산술 연산자는 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/) 그리고 나머지(%)를 말합니다. 나머지란 나눗셈에서 몫을 제외한 나머지를 의미합니다.

연산자예제의미
+ x + y 덧셈
- x - y 뺄셈
* x * y 곱셈
/ x / y 나눗셈
% x % y 나머지

자료형이 정수형, 실수형이냐에 따라서 연산 결과가 달라질 수 있습니다. 정수는 -3, -2, -1과 같은 음의 정수, 0 그리고 +1, +2, +3과 같은 양의 정수를 말합니다.

실수는 정수 보다 큰 범위의 수입니다. 허수를 제외한 유한 소수(0.3), 유리수(1/3), 무리수(√2), 순환 소수(0.3333...) 등이 모두 포함된 범위입니다.

덧셈 연산자

C언어 덧셈은 + 기호를 사용해서 연산합니다.

#include<stdio.h> void main() { int x = 2; //정수 자료형(int) 조건으로 변수 x를 생성하고 정수 2를 대입했습니다. int y = 3; //정수 자료형(int) 조건으로 변수 y를 생성하고 정수 3을 대입했습니다. int z; //정수 자료형(int) 조건으로 변수 z를 생성했지만, 변수값은 지정하지 않았습니다. z = x + y; //변수 z에 변수 x와 변수 y의 값을 더해서 저장합니다. printf("%d", z); //정수형 자료형(%d)으로 변수 z에 저장된 변수값(x + y)을 출력합니다. }

결과

5

소수와 같은 실수 범위를 더할 경우 변수 선언시 자료형을 실수(float)로 변환하고, 출력시(printf) 자료형도 실수(%f)로 변환해야 합니다. 또한 실수의 경우 출력시 기본 소수 여섯자릿수까지 출력됩니다. 적절한 자릿수 조절이 필요합니다.

#include<stdio.h> void main() { float x = 0.3; //실수형(float) 자료형 조건으로 변수 x를 생성하고, 변수값에 실수 0.3를 대입합니다. float y = 4.2; //실수형(float) 자료형 조건으로 변수 y를 생성하고, 변수값에 실수 4.2를 대입합니다. float z; //실수형(float) 자료형 조건으로 변수 z를 생성하지만, 변수값은 비워둡니다. z = x + y; //변수 z에 변수 x와 변수 y의 합계를 삽입합니다. printf("%2.1f", z); //실수형(float) 자료(%f)로 변수 z에 삽입된 값(x + y)을 출력합니다. 출력시 자릿수는 2.1로 결정되며 2는 전체 자릿수 개수 0.1은 소수 자릿수의 개수를 정의합니다. }

결과

4.5

뺄셈 연산자

C언어 뺄셈은 - 기호를 사용해서 연산합니다.

#include<stdio.h> void main() { int x = 2; //정수 자료형(int) 조건으로 변수 x를 생성하고 정수 2를 대입했습니다. int y = 3; //정수 자료형(int) 조건으로 변수 y를 생성하고 정수 3을 대입했습니다. int z; //정수 자료형(int) 조건으로 변수 z를 생성했지만, 변수값은 지정하지 않았습니다. z = x - y; //변수 z에 변수 x에서 변수 y를 뺀 값을 저장합니다. printf("%d", z); //정수형 자료형(%d)으로 변수 z에 저장된 변수값(x - y)을 출력합니다. }

결과

-1

곱셈 연산자

C언어 곱셈은 * 기호를 사용해서 연산합니다.

#include<stdio.h> void main() { int x = 3; int y = 4; int z; z = x * y; printf("%d", z); }

결과

12

나눗셈 연산자

C언어 나눗셈에서는 / 기호를 사용합니다. 나눗셈의 경우 정수 / 정수 = 실수 형태인 경우가 있을 수 있습니다. 그럴 경우 자료형을 실수형으로 적절히 변환해야 합니다. 예를 들어 5 / 2 = 2.5 수식에서 5와 2는 정수이지만 결과인 2.5는 소수이므로 실수입니다. 아래와 같이 예제를 짤 경우 답은 2.5가 아닌 2로 정수 형태로 출력됩니다. 이 경우는 나눗셈이 아니라 몫을 구한 경우라고 볼 수 있습니다.

#include<stdio.h> void main() { int x = 5; //정수 자료형(int)으로 변수 x를 지정하고, 변수값 5를 대입합니다. int y = 2; //정수 자료형(int)으로 변수 y를 지정하고, 변수값 2를 대입합니다. int z; //정수 자료형(int)으로 변수 z를 지정하고, 변수값은 비워둡니다. z = x / y; //변수 z에 변수 x를 변수 y로 나눈 값을 저장합니다. printf("%d", z); //정수 자료형(%d)으로 변수 z에 삽입된 변수값(x / y)을 출력합니다. }

결과

2

몫이 아닌 나눗셈의 정확한 연산을 구해야 할 경우 변수 선언시 자료형을 실수형(float)로 변경해야 하고, 출력 함수에서도 자료형을 실수형(%f)로 변경해줘야 합니다.

#include<stdio.h> void main() { float x = 5; //실수 자료형(float)으로 변수 x를 지정하고, 변수값 5를 대입합니다. float y = 2; //실수 자료형(float)으로 변수 y를 지정하고, 변수값 2를 대입합니다. float z; //실수 자료형(float)으로 변수 z를 지정하고, 변수값은 비워둡니다. z = x / y; //변수 z에 변수 x를 변수 y로 나눈 값을 저장합니다. printf("%2.1f", z); //실수 자료형(%f)으로 변수 z에 삽입된 변수값(x / y)을 출력합니다. 자릿수는 2.1로 숫자 2는 총 자리수를 의미하며 소수 자릿수 0.1은 소수 한 자리를 의미합니다. }

결과

2.5

나머지 연산자

C언어 나머지 연산은 % 기호를 사용합니다. 5에서 3을 나누면 몫은 1이고 나머지는 2입니다.

#include<stdio.h> void main() { int x = 5; int y = 3; int z; z = x % y; printf("%d", z); }

결과

2

나머지 연산자는 홀수/짝수를 구분할 때 자주 사용됩니다.


수학에서 35 + 1 * 2의 결과는 무엇일까요? 이 식에서는 덧셈 다음에 곱셈으로 나와있지만 곱셈이 덧셈보다 우선순위가 높으므로 72가 아니라 37이 됩니다. 즉 1 * 2를 먼저 계산해서 2가 나오고, 앞의 35와 더해서 37이 됩니다. 만약 35 + 1를 먼저 계산하려면 (35 + 1) * 2처럼 괄호로 묶어주어야 합니다.

마찬가지로 C 언어도 곱셈이 덧셈보다 우선순위가 높고, 다양한 연산자들끼리 우선순위가 정해져 있습니다.

표 25‑1 C 언어 연산자 우선순위 우선순위연산자설명결합 법칙(방향)
1 x++
x--
( )
[ ]
.
->
(자료형){값}
증가 연산자(뒤, 후위)
감소 연산자(뒤, 후위)
함수 호출
배열 첨자
구조체/공용체 멤버 접근
포인터로 구조체/공용체 멤버 접근
복합 리터럴
2 ++x
--x
+x
-x
!
~
(자료형)
*x
&x
sizeof
증가 연산자(앞, 전위)
감소 연산자(앞, 전위)
단항 덧셈(양의 부호)
단항 뺄셈(음의 부호)
논리 NOT
비트 NOT
자료형 캐스팅(자료형 변환)
포인터 x 역참조
x의 주소
자료형의 크기

3 *
/
%
곱셈
나눗셈
나머지
4 +
-
덧셈
뺄셈
5 <<
>>
비트를 왼쪽으로 시프트
비트를 오른쪽으로 시프트
6 <
<=
>
>=
작음
작거나 같음

크거나 같음
7 ==
!=
같음
다름
8 & 비트 AND
9 ^ 비트 XOR
10 | 비트 OR
11 && 논리 AND
12 || 논리 OR
13 ? : 삼항 연산자
14 =
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=

할당
덧셈 후 할당
뺄셈 후 할당
곱셈 후 할당
나눗셈 후 할당
나머지 연산 후 할당
비트를 왼쪽으로 시프트한 후 할당
비트를 오른쪽으로 시프트한 후 할당
비트 AND 연산 후 할당
비트 XOR 연산 후 할당
비트 OR 연산 후 할당

15 , 쉼표(콤마) 연산자

연산자 우선순위를 모두 외울 필요는 없으며 필요할 때 찾아보면 됩니다. 실무에서는 연산자의 계산 순서를 ( ) (괄호)로 명확하게 나타내는 것을 선호합니다.

보통 남이 만든 코드 중에서 연산자에 괄호를 잘 사용하지 않아 이해하기가 힘들 때나 찾아보면 됩니다.


Toplist

최신 우편물

태그