OneDev
[C] 6. 연산자(1) -산술연산자/대입연산자/복합대입연산자 본문
이번에는 C언어에서 컴퓨터에 어떻게 연산을 명령하는지 알아보자.
이를 위해 산술연산자, 대입연산자, 비트연산자 등등에 대해 학습해볼 계획이다.
이번 포스팅에서는 산술연산자와 대입연산자에 대해서 알아보도록하자.
1. 산술연산자 (Aritmetic Operator)
산술 연산자는 가장 기본적인 연산인 사칙연산에 사용되는 연산자이다.
일상 생활에서 많이 사용하는 더하기, 곱하기, 빼기, 나누기 등이 이에 해당한다.
산술 연산자들은 아래와 같은 것들이 있다.
| 연산자 | 연산 |
| + | 더하기 |
| - | 빼기 |
| * | 곱하기 |
| / | 나누기 (몫 구하기) |
| % | 나머지 구하기 |
+참고) 나눗셈(/) 연산을 나눗셈에서 몫을 출력하도록 사용할 수 있다.
반환값의 자료형을 정수형으로 지정하면 몫에 해당하는 정수부분만 출력되기 때문이다.
#include<stdio.h>
int main(){
int a = 5;
int b = 2;
printf("%d \n", a/b); // 출력해보면 5나누기 2의 몫인 1이 나오는 것을 확인할 수 있다
return 0;
}
++참고2) %연산자는 정수형 자료들에만 사용 가능하다( %f 등은 사용하면 안된다)
#include <stdio.h>
int main() {
int a, b;
a = 10;
b = 3;
printf("a / b 는 : %f \n", a / b); // 이런건 하면 안된다
return 0;
}
+++참고3) % 문자 자체를 출력하고 싶을때는 %%로 쓰면된다
printf("a %% b 는 : %d \n", a%b); // 문자 %를 출력하기 위해 %%로 작성해준걸 볼 수 있다.
++++참고4) 산술변환
두 정수형 변수 사이의 연산은 언제나 정수를 반환한다.
그래서 위에 적힌 %f 를 정수형 연산에서 사용하면 이상한 결과가 나오게 되는 것이다.
그러면 서로 다른 자료형을 가진 변수들의 연산은 어떨까?
아래의 코드를 실행해보자
#include <stdio.h>
int main(){
int a; // a 는 정수형
double b; // b 는 실수형
a = 10;
b = 3;
printf("a/b 는 : %f \n", a / b);
printf("b/a 는 : %f \n", b/a);
return 0;
}
이 코드를 실행해보면 다음과 같은 결과를 얻을 수 있다 :

a 는 정수형 변수, b 는 실수형 변수인데 연산의 결과값이 정상적으로 잘 출력된 것을 볼 수 있다.
이는 컴파일러가 "산술변환" 이라는 과정을 거치기 때문이다.
산술변환이란, 자료형이 다른 두 변수를 연산할 때 숫자의 범위가 큰 자료형으로 자료형들을 바꿔주는 것 을 뜻한다.
위의 예시에서는 double 이 int 에 비해 포함하는 더 큰 숫자이므로 double 자료형으로 바뀌어진 것이다.
주의) 이 경우 결과값도 double 형태로 출력되기 때문에
printf(" a / b 는 : %d \n", a / b);
와 같이 작성하게되면 오류가 나게된다(%d는 정수형이기 때문)
2. 대입연산자(Assignment Operator)
결론부터 말하면 등호(=) 를 대입연산자라 한다.
이름에서 추측할 수 있듯이, 대입에 사용되는 연산자이다.
개인적으로는 영어 Assignmet (할당)이 와닿는 표현이라고 생각한다.
각설하고, 구체적인 사용법은 다음과 같다.
변수 = 대입(저장)할 값
이는 우측의 값을 좌측에 대입한다는 의미이다.
등호가 흔히 사용하는 같다(equal)의 의미가 아님에 유의하자.
(어떤 두 수가 같음을 표현하고자 할때는 ==을 사용한다.)
a = 3;
위의 a = 3 이라는 코드는 a 의 값이 3이라는 것이 아니라, a에 3이라는 값을 저장하겠다는 의미이다.
a = a +3;
와 같은 식은 일반적인 수식이라면 말이 안되지만(0 = 3 이라는 말이 되므로),
우리는 대입연산자의 의미를 알아보았기 때문에 이 코드가 a에 기존 a값에 3을 더한만큼의 값을 저장하라는 의미라는 것을 알 수 있다.
3. 복합대입 연산자
바로 위에서 예시로 본 a = a + 3 과 같은 코드를 간단하게 쓸 수 있게 해주는 연산자가 있는데, 이를 복합대입연산자라 한다. 복합대입연산자에는 다음과 같은 것들이 있다.
a += x; // a = a + x; 와 같다
a -= x; // a = a - x;와 같다
a *= x; // a = a * x;와 같다
a /= x; // a = a / x;와 같다
// 아래의 연산자를 증감연산자라 한다
a++; // a에 1씩 더해준다(후위형 prefix : 결과값 먼저 반환한 뒤 1더해줌)
++a; // a에 1씩 더해준다(전위형 postfix : 1을 먼저 더해준 뒤 결과값 반환)
a-- // a에서 1씩 빼준다
--a // a에서 1씩 뺴준다
'Language > C' 카테고리의 다른 글
| [C] 8. 오버플로우(overflow) (0) | 2022.07.15 |
|---|---|
| [C] 7. 연산자(2) - 비트연산자 (0) | 2022.07.14 |
| [C] 5. 변수(Variables) (0) | 2022.07.05 |
| [C] 4. 주석 (0) | 2022.06.28 |
| [C] 3. Hello World 분석 - #include/stdio.h/main()/printf()/ \n (0) | 2022.06.27 |