본문 바로가기
프로그래밍/c언어 기초공부

[C언어 기초-05] 연산자 (대입, 산술, 증감연산자)

by 졸린이 2021. 8. 3.
반응형

C언어 연산자

 

대입연산자

앞서 나온 변수와 자료형 편에서 이미 대입연산자의 정의 아닌 정의가 나오기도 했고... 뭐 여러 코드를 실습하고 보면은 그냥 자연스레 몸에 익혀진다.

 

우선 대입연산자는 ' = ' 이다. 여기서 equal(동일)의 의미가 아닌 assign(할당하다)이다.

 

즉 변수 = 데이터;  는 변수에 데이터를 할당하다, 배정하다, 대입하다가 되는 것이다.

 

쉽게 오른쪽에 있는 값을 왼쪽에 넣는다.

int n;		// 정수형 변수 n 선언

n = 10;		// 변수 n에 정수 10을 대입하여 초기화

이런식으로 사용할 수 있다. 아주 간단하다.

 

산술연산자

산술 연산자는 +, -, *, /, % 이렇게 다섯개 있다.

 

변수에 값을 할당하여 산술연산자로 계산을 해도 되고 그냥 쌩값과 값대로 계산해도 된다. (변수와 값과 연산도 가능)

 

+, -, * 는 우릭 아는 의미와 똑같다. 그냥 두 값을 더하거나 빼고 곱하는 것이다.

 

/, % 이 의미가 조금 다르게 표현된다.

 

/ (나눗셈)

x / y 는 x를 y로 나눈다는 의미이다. 여기까지는 똑같은데 두 변수가 정수타입이냐 실수타입이냐에 따라서 조금 다르다.

코드로 확인해보면

#include<stdio.h>

main() {
	int x = 10;		//변수 x에 정수 10을 대입
	int y = 3;		//변수 y에 정수 3을 대입

	printf("%d", x / y);	//x / y를 하고 출력
}

10 / 3 즉 10을 3으로 나누었는데 답이 3으로 나왔다. 실제의 값은 3.33333333ㆍㆍㆍㆍㆍㆍㆍ 이렇게 나오게 된다.

 

하지만 계산할 변수의 선언을 int 즉 정수타입으로 선언했다.

 

실수까지 표현하고 싶으면 int 가 아닌 float나 double 타입으로 변수를 선언해야 한다.

 

그리고 printf() 안에 "%d" 는 정수를 출력하는 변환자이다.

 

3.33333은 실수이므로 3.3333출력을 표현하고 싶으면 "%d"가 아닌 "%f"로 해야 한다.

#include<stdio.h>

main() {
	float x = 10;
	float y = 3;

	printf("%f", x / y);
}

이렇게 출력이 된다. 즉 정수형 변수끼리 나눠서 값을 사용하면 나머지는 버리게 된다.

나머지까지 포함해서(실수값) 사용하고 싶으면 실수형 변수 float나 double을 사용해야 한다.

 

참고로 3.333333까지 출력이 되었는데 '아 너무 길어 좀 잘라서 표현하고 싶다' 면 

printf("%.2f", x / y);

이렇게 "%.2f" 로 .숫자 로 표현하고 싶은 소수점자리수를 입력해주면 된다.

 

% (나머지)

나누기연산 설명이 적다보니 길어졌다... 나머지는 생각보다 간단하다. 나머지가 그냥 바로 그 의미이다.

 

우선 정수끼리의 연산만 할 수 있다. 위에 코드를 나머지 연산으로 바꿔보자.

#include<stdio.h>

main() {
	int x = 10;
	int y = 3;

	printf("%d", x % y);
}

10을 3으로 나머지 연산을 하면 10을 3으로 나누고 몫이 아닌 나머지를 계산해 낸다.

 

그래서 나머지 연산이다. x % y는 x를 y로 나누고 나머지 값

 

때문에 정수로만 연산이 가능하다. 실수끼리의 연산은 나머지를 남기지 않고 소수로 표현해야 하기 때문

 

flaot로 선언하고 나머지 연산을 쓰면 빌드 오류가 뜬다.

빨간줄로 찍찍 그어준다.

 

참고로 산술연산자의 수식 우선순위는 일반 수학에서의 규칙과 같다. 하지만 괜히 복잡하게 생각하지 말고 왠만하면 괄호 치는 습관이 좋다.

증감연산자

증감연산자는 ++(증가), --(감소) 두가지가 있다. 변수 앞뒤에 붙어서 그냥 1증가하냐 감소하냐 이렇게만 표현하므로 단항연산자라고도 한다.

 

산술연잔자는 이항연산자라고 부른다.

count = count + 1;

count++;

코드 두 줄을 보자 첫째 줄을 보면 대입연산자와 + 산술연산자가 나왔다. count에 +1을 하여 count에 대입시킨다.

즉 count 값이 1 증가했다.

아래 코드를 보면  count++; 즉 count 값이 1 증가했다. 같은 의미이다.

 

이는 -도 마찬가지이다. 아주 간단한데 다만 전위, 후기 표현이란게 햇갈릴 수 있다.

++ 전위 표기 ++count 변수를 1 증가 시킨 후 사용
후위 표기 count++ 변수를 사용 후 1 증가
-- 전위 표기 --count 변수를 1 감소 시킨 후 사용
후위 표기 count-- 변수를 사용 후 1 감소

변수의 앞에 있느냐 뒤에 있느냐가 차이가 있다. 수식은 간단하나 남발하면 햇갈릴 요지가 있다.

 

간단히 차이점을 코드로 본다.

#include<stdio.h>

main() {
	int a = 1;
	int b = 100;
	
	int c = ++a;
	int d = b--;

	printf("a = %d, b = %d\n", a, b);
	printf("c = %d, d = %d ", c, d);
}

a는 1, b는 100으로 초기화 시켰다.

 

c에는 ++a를 대입시킨다. 전위 표기이므로 변수를 1 증가. 즉 a를 2로 증가시킨 후 사용 c에다 대입시킨다.

즉 a는 2이며 c는 2가 들어가게 된다.

 

d에는 b--를 대입시킨다. 이번에는 후위 표기이므로 변수를 사용 후 1 감소시킨다. 

b의 값 100을 d에 넣고 b는 1 감소시킨다. d는 100이고 b는 99가 된다.

결과값이 이렇게 된다.

 

반응형

댓글