본문 바로가기
  • Larry`s arduino blog
아두이노

[ 아두이노 강좌 ] 2-4. C언어 기초 4-연산자

by larry 2021. 1. 2.

[ 아두이노 강좌 ] 2-4. C언어 기초 4-연산자

 

오늘은 연산자들에 대해 알아볼 것이다.

연산은 값을 계산하는 것을 말하고 대표적인 연산자에는 +,-등이 있다.

몇몇 연산자들은 이미 많이 봐왔던 것들도 있다.

그러니 어렵지는 않을 것이다.

 

1. 기본 연산자

  • + : 더한다
  • - : 뺀다
  • * : 곱한다
  • / : 나눈다
  • % : 나눈 나머지
int a=3;
int b=2;
int c;
c=a+b; // c 는 5이다
c=a-b; // c 는 1이다
c=a*b; // c 는 6이다
c=a/b; // c 는 1이다
c=a%b; // c 는 1이다

 

2. 증감 연산자

  • ++ : 값을 1만큼 더한다
  • -- : 값을 1만큼 뺀다

여기서 ++ 이나 -- 를 앞에 붙이는지 뒤에 붙이는지에 따라서 약간의 차이가 있다

  • 전위 연산자 : 연산할 변수 앞에 붙임, 먼저 계산한 후에 해당 줄의 코드를 실행한다
  • 후위 연산자 : 연산할 변수 뒤에 붙임, 해당 줄의 코드를 먼저 실행한 후에 다음 줄부터 계산된 값이 적용된다
int a=0;
int b;
b=a++; // a는 이 줄의 코드가 실행된 후에 더해지기 때문에 b에는 3이 들어간다.
b=a;  // b는 4이다

a=0;
b=++a; // ++a가 먼저 실행되기 때문에 b는 1이다

//--의 경우에도 같다.

 

3. 관계 연산자

값과 값의 관계를 비교하여 참인지 거짓인지 나타낸다.

참이면 1을 나타내고 거짓이면 0을 나타낸다.

  • == : 같다
  • != : 다르다
  • > : 왼쪽 값이 더 크다
  • < : 오른쪽 값이 더 크다
  • >= : 왼쪽 값이 크거나 같다
  • <= : 오른쪽 값이 크거나 같다
int a=5;
int b;
b=(a>1); // a(5)는 1보다 크므로 b는 1(참)이다
b=(a>=6); // a는 6보다 크거나 같지 않으므로 b는 0(거짓)이다
b=(a<5); // a는 5보다 작지 않으므로 b는 0(거짓)이다
b=(a<=5); // a는 5보다 작거나 같으므로 b는 1(참)이다

 

4. 논리 연산자

참과 거짓을 논리 연산한다.

0 또는 1을 나타낸다.

  • && : "그리고"라는 뜻으로 양쪽 모두 참일 경우에만 1을 나타낸다
  • || : "또는"이라는 뜻으로 양쪽 중 어느 한쪽만 참이어도 1을 나타낸다 ( '|'이 기호는 엔터 위에 있는 원화표시(\)를 Shift와 함께 누르면 된다.)
int a=4;
int b;
b=(a>1 && a<5); // a는 1보다 크고 5보다 작으므로 b는 1(참)이다
b=(a<4 || a>5); // a는 4보다 작거나 5보다 크지 않으므로 b는 0(거짓)이다

 

5. 복합 대입 연산자

기본연산자(+,-,*,/,%)의 계산과 대입을 한 번에 할 수 있도록 만든 줄임말 같은 것이다.

사실 조금만 길게 쓰면 되기 때문에 필수는 아니지만 알고 있으면 편하기 때문에 알고 있는 것이 좋다.

a(연산자)=b는 a=a(연산자)b와 같은 뜻이다.

이것처럼 +자리에 +,-,*,/,%를 넣어서 모두 사용할 수 있다.

  • a+=b : a에 a+b의 값을 대입한다(a=a+b)
  • a-=b : a에 a-b의 값을 대입한다(a=a-b)
  • a*=b : a에 a*b의 값을 대입한다(a=a*b)
  • a/=b : a에 a/b의 값을 대입한다(a=a/b)
  • a%=b : a에 a%b의 값을 대입한다(a=a%b)
int a=5;
a+=3; // a=a+3과 같으므로 a는 8이다
a-=2; // a=a-2와 같으므로 a는 6이다
a*=5; // a=a*5와 같으므로 a는 30이다
a/=3; // a=a/3과 같으므로 a는 10이다
a%=3; // a=a%3과 같으므로 a는 1이다

 

이외에도 비트 연산자, 비트 이동 연산자 등이 있지만 아두이노에서는 거의 쓰이지 않으므로 넘어가자

 

*연산자 우선순위

위에서 여러 가지 연산자를 배웠는데 우리가 +,-보다 *,/를 먼저 계산하는 것처럼 위의 연산자에도 우선순위가 있다.

  1. 후위++  후위--  ()  []  .  ->
  2. 전위++  전위--  단항+  단항-  !  ~  sizeof()  &(주소)  *(참조)  형변환
  3. *  /  %
  4. +  -
  5. <<  >>  (비트이동)
  6. <  <=  >  >=  (관계연산자)
  7. ==  !=
  8. 비트논리 연산자
  9. 논리 연산자(&&  ||)
  10. ?:(조건연산자)
  11. =(대입)  복합연산자
  12. ,

 

다음에는 조건문에 대해 알아보자

댓글