"C++ 기초 명령어" 챕터에서는 C++ 프로그래밍을 하는데 있어 가장 기초적으로 사용되는 명령어들을 몇가지 알아보고 있습니다.
아래의 순서대로 챕터가 진행됩니다.
- [2.1. 변수와 변수 선언]
- [2.2. 데이터 입력 / 데이터 출력]
- [2.3. 데이터 타입]
- [2.3.1] 숫자를 표현하는 데이터 타입
- [2.3.2] 문자를 표현하는 데이터 타입 - 오늘의 주제
- [2.3.3] 데이터 타입별 호환성 - 오늘의 주제
- [2.4. Boolean 데이터 타입]
[2.3.3] 데이터 타입별 호환성
일반적으로 변수에는 그 데이터 타입에 맞는 데이터를 넣어야 합니다.
하지만 몇몇 변수는 컴파일러 마다 차이가 있을 수 있으나, 호환이 되는 경우도 많습니다.
그 경우에 대해 알아보도록 하겠습니다.
1. int에 실수 대입 - 가능
예를 들어, 아래와 같은 경우는 컴파일러 에러가 나거나, 소수를 제외한 2의 값만 저장할 수 있습니다
(이는 컴파일러마다 차이가 있으니, 이를 미연에 방지하기 위하여, int에는 정수만 넣고, double에 실수만 넣어야할것입니다)
int 변수;
변수 = 2.99;
결과: ERROR 또는 2만 저장
2. double에 정수 대입 - 가능
double 데이터에 정수값을 넣는 것은 괜찮습니다.
다만 double 은 8byte의 메모리를 차지하고, int 는 4byte의 메모리를 차지하기 때문에 메모리를 효율적으로 사용하는 측면에서는 정수를 사용할때는 int를 사용함이 바람직합니다.
아래의경우, 변수는 2의 값을 2.0으로 저장합니다. (이 또한, 컴파일러마다 차이가 있을 수 있음)
double 변수;
변수 = 2;
변수 = 2.99;//둘다가능
결과: 2.0 과 2.99
3. int에 bool 값을 대입 - 가능하나 불필요
int데이터에 bool 값을 넣는것도 가능은 합니다만, (사용은 하지말고, 가능하다는 사실만 아시면 됩니다)
bool 데이터 타입에서 false 는 0, true는 0을 제외한 모든 수 입니다.
그렇기 때문에, 아래처럼, 변수의 값(true)를 int 변수2에 대입하였을 경우 1이 저장됩니다.
(false의 경우, 0 이 저장)
bool 변수;
int 변수2;
변수 = true;
변수2 = 변수;
데이터 타입별 사칙연산
C++에서는 여러 종류의 데이터 타입을 가진 변수끼리 사칙연산을 할 수 있습니다.
이미 알고 있는 내용이겠지만,
'+'로 덧셈을
'-'로 뺄셈을
'*'로 곱셈을
'/'로 나누기를 할 수 있습니다.
숫자를 다루는 모든 데이터 타입은 사칙연산에 사용될 수 있습니다.
하지만 어떤 데이터 타입끼리 연산을 하느냐에 따라서, 데이터에 변화가 생길 수 있습니다.
데이터 타입별로 사칙연산을 할때의 특징에 대해 알아보겠습니다
같은 데이터 타입을 가진 변수끼리의 사칙연산은 동일한 데이터 타입의 데이터를 출력
같은 데이터 타입을 가진 변수를 연산하면, 같은 데이터 타입을 가진 결과가 출력됩니다.
아래와 같은 연산을 실행하였을 때는 int 의 데이터 타입을 가진 결과물이 출력됩니다.
int 변수 = 2;
int 변수2 = 4;
cout<<변수+변수2;
결과: 6
int 끼리 나누기를 실행할 시, 소수는 사라짐
int 값을 소수를 포함하지 않습니다. 그렇기 때문에, int 값 끼리 나누기(/)를 하여 소수점이 나온다면, 소수를 제외한 정수값만 출력됩니다.
즉, 반올림 또는 반내림 없이, 소수값은 사라집니다. (예. 10/3은 3.33..이 아닌 3)
*소수값은 반내림된것이 아니라 그냥 사라지는 것입니다.
아래의 예처럼, 7을 2로 나누면 3.5가 나오지만, int 값끼리 계산한것이기 때문에, 결과도 int 값만 출력됩니다.
즉, .5가 사라진 3만 출력됩니다.
int 변수 = 7;
int 변수2 = 2;
cout<<변수/변수2;
결과: 3
int 끼리의 계산시, 나머지값을 계산하기 위해선 '%' 값을 사용
int 17 을 int 5로 나눌경우, 3이 출력됩니다. 여기서 발생하는 나머지 값 2를 계산하기 위해서 '%'키를 사용합니다.
int 변수 = 17;
int 변수2 = 3;
cout<<변수/변수2<<endl;
cout<<변수%변수2;
결과: 첫번째 값 변수/변수2 = 3
두번째 값 변수%변수2 = 2
int 와 double 을 연산하였을 때, double 값이 출력됩니다.
int 와 double 을 연산하면, 결과 값은 double 입니다. (모든 사칙 연산에 대하여)
즉, 아래처럼, int 값 7을 double 값 2.0으로 나누면, 결과는 3.5 가 출력됩니다.
*만약 int 6을 double 2로 나눈다면, 결과값 3은 int 값이 아닌 double 값 3.0입니다.
int 변수 = 7;
double 변수2 = 2.0;
cout<<변수/변수2;
결과: 3.5 (double 값)
이상, 데이터 타입별로 어떤 값을 대입할 수 있는지, 호환성에 대해 알아보았으며,
데이터 타입별로 사칙연산을 할때, 어떤식의 유의점들이 있는지에 대해 살펴보았습니다.
추가적으로 C++의 사칙연산 관련해서는 ,
아래 예를 통하여, 일반적인 규칙에 대해 살펴보시면 도움이 될것입니다.
'Tech, Tech, Tech > C++' 카테고리의 다른 글
C++기초 [2.4 Boolean 데이터 타입][논리 연산자][관계 연산자] (0) | 2020.01.04 |
---|---|
C++ 기초 명령어 [2.3 데이터 타입, 자료형][문자를 표현하는 데이터 타입] (0) | 2019.12.26 |
C++ 기초 명령어 [2.3 데이터 타입, 자료형][숫자를 표현하는 데이터 타입] (0) | 2019.12.24 |
C++ 기초 명령어 [2.2 데이터의 입력과 출력][cin을 통한 데이터 입력] (0) | 2019.12.24 |
C++ 기초 명령어 [2.2 데이터의 입력과 출력] [이스케이프 시퀀스] (0) | 2019.12.20 |
댓글