연산과 자료형
연산과 자료형
연산자
연산자와 피연산자
여러 연산을 위해 사용하는 기호를 연산자라고 한다.
그리고 이러한 연산에서 사용되는 변수나 상수를 피연산자라고 한다.
예를 들어 1 + 2에서는 1은 제1피연산자 또는 왼쪽 피연산자라고 하고
+는 연산자 나머지 2는 제2피연산자 또는 오른쪽 피연산자라고 한다.
덧셈과 뺄셈
모두가 알고 있듯 덧셈은 + 연산자 빼기는 - 연산자를 사용한다.
곱셈과 나눗셈
곱셈은 * 연산자를 사용한다.
나눗셈에는 몫과 나머지가 있다.
C 프로그램에서 구현하려면 몫을 구하는 / 연산자를 사용하고
나머지를 구하는 연산자는 % 연산자를 사용한다.
연산 순서
만약 연산 순서를 바꾸고 싶다면 ( ) 를 사용하면 된다.
예를 들어 x + y * 2 와 (x + y) * 2 의 식이 있다고 했을 때 결과가 다를 수도 있다.
그 이유는 덧셈을 먼저 실행했을 때와 곱셈을 먼저 실행했을 때 값이 달라지기 때문이다.
따라서 자신이 의도하는 결과가 나오도록 하려면 연산 순서를 생각해야 한다.
식과 대입식 그리고 식 구문
식은 변수나 상수에 연산자를 결합한 것이다.
하지만 대입식은 식에 대입 연산자를 넣은 것이다.
예를 들면 x + 1 은 식 x + 1 = 2 는 대입식이다.
이러한 식 뒤에 ;(세미콜론) 을 붙이면 식 구문이 된다.
자료형
자료형과 객체
자료형에는 고유의 성질이 있다. 이 성질들을 받아 만들어진 변수를 객체라고 한다.
자료형은 객체를 만들 때 성질을 부여하는 용도이다.
예를 들면 자료형은 와플 기계라고 생각하고 객체를 와플로 생각하면 된다.
정수 상수와 부동소수점 상수
소수점이 없는 상수는 정수 상수라고 하고 소수부를 가진 상수를 부동소수점 상수라고 한다.
정수 상수의 자료형은 int형이고 부동소수점 상수의 자료형은 double이다.
형식 지정자 사용
int형과 double형의 형식 지정자 사용법이 다르다.
출력에서 int형의 형식 지정자는 printf("%d", x); double형은 printf("%f", x);
읽기에서 int형의 형식 지정자는 scanf("%d", &y); double형은 scanf("%lf", &y);
자료형과 연산
int / int 연산이나 double / double 연산 등 같은 자료형에서의 연산은 결과도 같은 자료형이다.
하지만 double / int 혹은 int / double 과 같이 서로의 자료형이 다르다면
int 자료형이 double로 변환되는 암묵적 형 변환이 수행된다. 그리고 결과도 double형으로 나온다.
이런 규칙의 원리는 피연산자끼리의 자료형 크기를 비교하여 크기가 작은 자료형이 더 큰 쪽의 자료형으로 변환된다.
캐스트
int형과 double형의 연산을 하다보면 서로의 자료형이 맞지 않아 소수점이 버려지는 일이 생긴다.
이를 해결하기 위해 캐스트를 사용하는데 식 앞에 (자료형)을 넣으면 형 변환이 된다.
사용 방법은 이렇다. (int) 식 또는 (double) 식