본문 바로가기

勉強/C,C++

연산자와 기초예제

C계열 언어와 프로그래밍 언어 에서의 연산자라는 개념은 꽤나 중요하게 다가온다. 가끔 생각지도 못한 곳에서 연산자의 개념을 사용하는데 이번에는 기초적인 연산자 몇 개를 정리해 보겠다.
 
C언어는 꽤 많은 연산자를 가지고 있다.

분류연산자
대입=
산술+ - * / %
부호+ -
증감++ --
관계> < == != >= <=
논리&& || !
조건?
콤마,
비트& | ^ ~ << >>
sizeofsizeof
형변환(type)
포인터* & []
구조체. ->

자주 사용하는 연산자는 빨간색으로 가끔 사용하는 것은 파란색으로 나타내봤다
 
간단한 예제를 준비해봤다. 입력받은 초의 분과 초를 구하는 코드이다.

#define _CRT_SECURE_NO_WARNINGS
#define SEC_PER_MINUTE 60 

#include <stdio.h>

int main(void) {

	int minute, second;
	double input;

	printf("초를 입력하세요: ");
	scanf("%lf", &input);

	minute = input / SEC_PER_MINUTE;
	second = (int)input % SEC_PER_MINUTE;

	printf("%f초는 %d분 %d초입니다. \n", input, minute, second);

	return 0;
}

 
#define은 기호상수를 정의 할때 사용한다.
저기서는 SEC_PER_MINUTE이라는 변수에 60을 저장해놨다.
왜 굳이 이걸 사용하냐 하면 #define은 프로그램 시작과 동시에 메모리에 올라간다. 이러한 성질을 이용하여 프로그래밍을 할 때도 있다. 이 부분은 나중에 함수를 공부 할 때 다시 적겠다.
 
double형에 scanf로 값을 받아 저장하는데 이때 %f가 아니라 %lf를 사용했다. scanf에서는 실수(ex: float, double)를 저장할 때 반드시 %lf를 사용해야 한다.
 
second에서 %연사자를 사용하는데 이는 나머지를 구하는 연산자이다. 때문에 정수끼리만 사용해야 하는데 우리는 input을 double로 받았다. 이러한 경우는 형변환(casting)을 이용하여 input을 int처럼 바꾸어 사용할 수 있다.
 
증감 연산자에 대해 설명하기 위해 예제를 준비해봤다.

#include <stdio.h>

int main(void) {

	int x = 10, y = 10;

	printf("x=%d\n",x);
	printf("++x의 값=%d\n", ++x);
	printf("x=%d\n\n",x);

	printf("y=%d\n", y);
	printf("y++의 값=%d\n", y++);
	printf("y=%d\n",y);


	return 0;
}

실행 결과는 다음과 같다.

더보기

x=10
++x의 값=11
x=11

y=10
y++의 값=10
y=11

전위 연산 같은 경우는 값이 증가하고 바로 값이 수식에 사용됐다.
 
후위 연산 같은 경우는 수식에 먼저 사용하고 값을 증가 시켰다.
이 부분은 헷갈릴 수도 있으니 기억해두자.
 
복합 대입 연산자에 대해 설명하겠다.
x += y;
이렇게 사용하면 x = x + y; 이 수식과 동일하다.
나머지 연산자들도 이와 같이 사용하면 된다.(ex: x-= y, x*=y, etc.....)
이는 대입연산자 특성상 오른쪽을 먼저 계산하고 왼쪽에 대입하는데 이런 수식의 경우는 x와 y의 값이 초기화 되어있지 않으면 에러를 일으킨다. 없는 값을 더하고 저장 할수는 없기 때문이다.
 
관계 연산자는 두 수를 비교하는데 사용한다.
x와 y가 같은가? (x==y)
             다른가?(x!=y)
             큰가, 작은가?(x>y, x<y)
등등 여러가지 비교 연산을 할 때 사용한다.
관계연산은 사용하면 그 자리에 값을 리턴시킨다.
참이면 true(1)
거짓이면 false(0)
리턴의 개념과 이를 어떻게 사용하는지는 제어문과 함수를 설명 할때 다시 설명하겠다.
 
논리 연산자는 이산 수학을 배웠다면 쉽게 할수있다.
true, false, not을 이용하여 연산하는 연산자이다.
(1==1) : true
(1==0) : false
!(1==1) : false
!(1==0): true
 
true && true : true
true && false : false
false && false : false
 
true || true : true
true || false : true
false || flase : false
 
이런 식으로 사용하는 연산자인데 전에 나왔던 관계 연산자와 같이 사용하는 경우가 많다.
이렇게 결과에 따라 관계 연산자 처럼 값을 리턴한다.
and연산과 or 연산에 대해 아직 모른다면 공부하고 오자.
 
조건 연산자는 가끔 사용한다. 솔직히 많이 사용해 본적이 없다.
 
value = (x > y) ? x : y;
식을 해석하자면 (x>y)가
참이면 value = x;
거짓이면 value = y;
이렇게 사용하는 식이다. 나중에 배울 제어문을 더 많이 사용하기 때문에 이런 것이 있다는 것만 알고 있자.
 
 
연산자에도 연산의 우선순위가 있는데 이는 해보면서 알아가는 것이 좋다.
 
연산자는 이정도만 설명해두겠다.
 
C언어를 공부중인데 질문이 있으시다면 댓글로 남겨주세요! 최대한 친절하게 알려드리겠습니다!
 


undefined