A. 연산자(operator)
1. 연산자 기초
a. 연산자란?
🌟 프로그램의 산술식이나 연산식을 표현하고 처리하기 위해 제공되는 다양한 기호
b. 연산자의 종류
1) 산술 연산자
2) 대입 연산자
3) 증감 연산자
4) 비교 연산자
5) 논리 연산자
6) 비트 연산자
7) 기타 연산자
8) C++ 연산자
c. 연산자의 우선순위(operator precedence)와 결합 방향(associativity)
1) 연산자의 우선순위
수식 내에 여러 연산자가 함께 등장할 때, 어느 연산자가 먼저 처리될 것인가를 결정하는 것
2) 연산자의 결합 방향
수식 내에 우선순위가 같은 연산자가 둘 이상 있을 때, 먼저 어느 연산을 수행할 것인가를 결정
3) 연산자의 우선순위표 (참조표)
- 우선순위가 빠른 연산자가 가장 먼저 실행
- 같은 우선순위를 가지는 연산자가 둘 이상 있을 때에는 결합 순서에 따라 실행 순서가 결정
우선순위 | 연산자 | 설명 | 결합 방향 |
1 | :: | 범위 지정 연산자 | - |
2 | ++ | 후위 증가 연산자 | 왼쪽에서 오른쪽으로 |
-- | 후위 감소 연산자 | 왼쪽에서 오른쪽으로 | |
() | 함수 호출 | 왼쪽에서 오른쪽으로 | |
[] | 첨자 연산자 | 왼쪽에서 오른쪽으로 | |
. | 멤버 연산자 | 왼쪽에서 오른쪽으로 | |
-> | 멤버 접근 연산자 | 왼쪽에서 오른쪽으로 | |
typeid | 타입 인식 | 왼쪽에서 오른쪽으로 | |
const_cast | 상수 타입 변환 | 왼쪽에서 오른쪽으로 | |
dynamic_cast | 동적 타입 변환 | 왼쪽에서 오른쪽으로 | |
reinterpret_cast | 재해석 타입 변환 | 왼쪽에서 오른쪽으로 | |
static_cast | 정적 타입 변환 | 왼쪽에서 오른쪽으로 | |
3 | ! | 논리 NOT 연산자 | 오른쪽에서 왼쪽으로 |
~ | 비트 NOT 연산자 | 오른쪽에서 왼쪽으로 | |
+ | 양의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
- | 음의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
++ | 전위 증가 연산자 | 오른쪽에서 왼쪽으로 | |
-- | 전위 감소 연산자 | 오른쪽에서 왼쪽으로 | |
(타입) | 타입 캐스트 연산자 | 오른쪽에서 왼쪽으로 | |
* | 참조 연산자 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
& | 주소 연산자 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
sizeof | 크기 연산자 | 오른쪽에서 왼쪽으로 | |
new | 객체 생성 | 오른쪽에서 왼쪽으로 | |
delete | 객체 제거 | 오른쪽에서 왼쪽으로 | |
4 | .* | 멤버 포인터 연산자 | 왼쪽에서 오른쪽으로 |
->* | 참조 멤버 포인터 연산자 | 왼쪽에서 오른쪽으로 | |
5 | * | 곱셈 연산자 | 왼쪽에서 오른쪽으로 |
/ | 나눗셈 연산자 | 왼쪽에서 오른쪽으로 | |
% | 나머지 연산자 | 왼쪽에서 오른쪽으로 | |
6 | + | 덧셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 |
- | 뺄셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 | |
7 | << | 비트 왼쪽 시프트 연산자 | 왼쪽에서 오른쪽으로 |
>> | 부호 비트를 확장하면서 비트 오른쪽 시프트 | 왼쪽에서 오른쪽으로 | |
8 | < | 관계 연산자(보다 작은) | 왼쪽에서 오른쪽으로 |
<= | 관계 연산자(보다 작거나 같은) | 왼쪽에서 오른쪽으로 | |
> | 관계 연산자(보다 큰) | 왼쪽에서 오른쪽으로 | |
>= | 관계 연산자(보다 크거나 같은) | 왼쪽에서 오른쪽으로 | |
9 | == | 관계 연산자(와 같은) | 왼쪽에서 오른쪽으로 |
!= | 관계 연산자(와 같지 않은) | 왼쪽에서 오른쪽으로 | |
10 | & | 비트 AND 연산자 | 왼쪽에서 오른쪽으로 |
11 | ^ | 비트 XOR 연산자 | 왼쪽에서 오른쪽으로 |
12 | | | 비트 OR 연산자 | 왼쪽에서 오른쪽으로 |
13 | && | 논리 AND 연산자 | 왼쪽에서 오른쪽으로 |
14 | || | 논리 OR 연산자 | 왼쪽에서 오른쪽으로 |
15 | ? : | 삼항 조건 연산자 | 오른쪽에서 왼쪽으로 |
16 | = | 대입 연산자 및 복합 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=) |
오른쪽에서 왼쪽으로 |
17 | throw | 예외 발생 | 왼쪽에서 오른쪽으로 |
18 | , | 쉼표 연산자 | 왼쪽에서 오른쪽으로 |
B. 연산자
1. 산술 연산자(arithmetic operator)
a. 산술 연산자란?
🌟 사칙연산을 다루는 연산자
b. 산술 연산의 특징
- 두 개의 피연산자를 가지는 이항 연산자
- 피연산자들의 결합 방향 : ➡
🧡 항이란?
해당 연산의 실행이 가능하기 위해 필요한 값이나 변수를 의미
즉, 이항 연산자란 해당 연산의 실행을 위해서 두 개의 값이나 변수가 필요한 연산자를 의미
c. 산술 연산의 종류
산술연산자 | 설명 | 예시 int a = 7; int b = 6 |
+ | 왼쪽 값에서 오른쪽 값을 더함 | a + b = 13 |
- | 왼쪽 값에서 오른쪽 값을 뺌 | a - b = 1 |
* | 왼쪽 값에서 오른쪽 값을 곱함 | a * b = 42 |
/ | 왼쪽 값을 오른쪽 값으로 나눔 | a / b = 1 |
% | 왼쪽 값을 오른쪽 값으로 나눈 나머지를 반환함 | a / b = 1 |
d. 산술 연산의 예시
❔ 예제
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 10;
int num2 = 4;
cout << "+ 연산자에 의한 결괏값은 " << num1 + num2 << "입니다." << endl;
cout << "- 연산자에 의한 결괏값은 " << num1 - num2 << "입니다." << endl;
cout << "* 연산자에 의한 결괏값은 " << num1 * num2 << "입니다." << endl;
cout << "/ 연산자에 의한 결괏값은 " << num1 / num2 << "입니다." << endl;
cout << "% 연산자에 의한 결괏값은 " << num1 % num2 << "입니다.";
return 0;
}
✨ 실행결과
+ 연산자에 의한 결괏값은 14입니다.
- 연산자에 의한 결괏값은 6입니다.
* 연산자에 의한 결괏값은 40입니다.
/ 연산자에 의한 결괏값은 2입니다.
% 연산자에 의한 결괏값은 2입니다.
2. 대입 연산자(assignment operator)
a. 대입 연산자란?
🌟 변수에 값을 대입할 때 사용
b. 대입 연산의 특징
- 두 개의 피연산자를 가지는 이항 연산자
- 피연산자들의 결합 방향 : ⬅
- 산술 연산자와 결합한 다양한 복합 대입 연산자가 존재
c. 대입 연산자의 종류
대입 연산자 | 설명 | 예제 int a = 10; |
= | 왼쪽 값에 오른쪽 값을 대입 | a = 3 // a = 3 |
+= | 왼쪽 값에 오른쪽 값을 더한후, 그 결괏값을 왼쪽 값에 대입 | a+=3 // a = 13 |
-= | 왼쪽 값에 오른쪽 값을 뺀 후, 그 결괏값을 왼쪽 값에 대입 | a-=3 // a = 7 |
*= | 왼쪽 값에 오른쪽 값을 곱한 후, 그 결괏값을 왼쪽 값에 대입 | a*=3 // a = 30 |
/= | 왼쪽 값에 오른쪽 값을 나눈 후, 그 결괏값을 왼쪽 값에 대입 | a/=3 // a = 3 |
%= | 왼쪽 값에 오른쪽 값을 나눈 후, 그 나머지를 왼쪽 값에 대입 | a%=3 // a = 1 |
d. 대입 연산의 예시
❔ 예제
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 8;
int num2 = 8;
int num3 = 8;
num1 = num1 + 5;
num2 += 5;
num3 =+ 5;
cout << "- 연산자에 의한 결괏값은 " << num1 << "입니다." << endl;
cout << "+= 연산자에 의한 결괏값은 " << num2 << "입니다." << endl;
cout << "=+ 연산자에 의한 결괏값은 " << num3 << "입니다.";
return 0;
}
✨ 실행결과
- 연산자에 의한 결괏값은 13입니다.
+= 연산자에 의한 결괏값은 13입니다.
=+ 연산자에 의한 결괏값은 5입니다. //단순히 숫자 5를 변수 num3에 대입하는 연산
4. 증감연산자 (increment and decrement operator)
a. 증감연산자란?
🌟 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용하는 연산자
b. 증감 연산의 특징
- 피연산자가 단 하나뿐인 단항 연산자
- 해당 연산자가 피연산자의 어느 쪽에 위치하는가에 따라 연산의 순서 및 결과가 달라짐
- 증감 연산된 변수의 값은 변경된다
c. 증감 연산자의 종류
증감 연산자 | 설명 |
++x | 먼저 값을 1 증가 후, 해당 연산 진행 |
x++ | 해당 연산 후, 값을 1 증가 |
--x | 먼저 값을 1 감소 후, 해당 연산 진행 |
x-- | 해당 연산 후, 값을 1 감소 |
d. 증감 연산자의 연산 순서
🤓 예제
#include <iostream>
using namespace std;
int main(void)
{
int x = 10;
int y = x-- + 5 + --x;
cout << "변수 x의 값은 " << x<< "이고, 변수 y의 값은 " << y << "로 변했습니다.";
return 0;
}
✨ 실행결과
변수 x의 값은 8이고, 변수 y의 값은 23로 변했습니다.
📝 예제 설명
① : 덧셈 연산이 먼저 수행 (10 + 5)
② : x의 감소 연산이 수행 (x의 값 : 9)
③ : 감소연산 수행 (x의 값 : 8)
④ : 덧셈 연산이 수행 (15 + 8)
⑤ : 마지막으로 대입 연산이 수행 (y의 값 : 23)
e. 증감 연산의 예제
🤓 예제
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 8;
int num2 = 8;
int result1, result2;
result1 = --num1 + 5;
result2 = num2-- + 5;
cout << "전위 감소 연산자에 의한 결괏값은 " << result1 << "이고, 변수의 값은 " << num1 << "로 변했습니다.";
cout << endl;
cout << "후위 감소 연산자에 의한 결괏값은 " << result2 << "이고, 변수의 값은 " << num2 << "로 변했습니다.";
return 0;
}
✨ 실행결과
전위 감소 연산자에 의한 결괏값은 12이고, 변수의 값은 7로 변했습니다.
후위 감소 연산자에 의한 결괏값은 13이고, 변수의 값은 7로 변했습니다.
5. 비교 연산자
a. 비교 연산자란?
🌟 피연산자 사이의 상대적인 크기를 판단하는 연산자
b. 비교 연산의 특징
- 두 개의 피연산자를 가지는 이항 연산자
- 피연산자들의 결합 방향 : ➡
c. 비교 연산자의 종류
증감 연산자 | 설명 |
== | 왼쪽의 값과 오른쪽 값이 같으면 1 |
!= | 왼쪽 값과 오른쪽 값이 같지 않으면 1 |
> | 왼쪽 값이 오른쪽 값보다 크면 1 |
>= | 왼쪽 값이 오른쪽 값보다 크거나 같으면 1 |
< | 왼쪽 값이 오른쪽 값보다 작으면 1 |
<= | 왼쪽 값이 오른쪽 값보다 작거나 같으면 1 |
💙 INFO
컴퓨터에서 참(true)은 보통 1로 표현되고, 거짓(false)은 0으로 표현되지만
C(++)에서는 참(true)은 0이 아닌 모든것, 거짓(false)은 동일하게 0
d. 비교 연산자의 예시
🤓 예제
int num01 = 3;
int num02 = 7;
cout << "!= 연산자에 의한 결괏값은 " << (num1 != num2) << "입니다." << endl;
cout << ">= 연산자에 의한 결괏값은 " << (num1 >= num2) << "입니다.";
✨ 실행결과
!= 연산자에 의한 결괏값은 1입니다.
>= 연산자에 의한 결괏값은 0입니다.
6. 논리 연산자
a. 논리 연산자란?
🌟 주어진 논리식을 판단하여, 참(true)과 거짓(false)을 결정하는 연산자
b. 논리 연산의 특징
1) AND / OR 연산자
- 두 개의 피연산자를 가지는 이항 연산자
- 피연산자들의 결합 방향 : ➡
2) NOT 연산자
- 단항 연산자
- 피연산자들의 결합 방향 : ⬅
c. 논리 연산자의 종류
논리 연산자 | 설명 |
&& | 논리식이 모두 참이면 1을 반환함. (논리 AND 연산) |
|| | 논리식 중에서 하나라도 참이면 1을 반환함. (논리 OR 연산) |
! | 논리식의 결과가 참이면 0을, 거짓이면 1을 반환함. (논리 NOT 연산) |
d. 논리 연산자의 진리표
A | B | A && B | A || B | !A |
1 (true) | 1 (true) | 1 (true) | 1 (true) | 0 (false) |
1 (true) | 0 (false) | 0 (false) | 1 (true) | 0 (false) |
0 (false) | 1 (true) | 0 (false) | 1 (true) | 1 (true) |
0 (false) | 0 (false) | 0 (false) | 0 (false) | 1 (true) |
e. 논리 연산자의 예시
🤓 예제
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 3;
int num2 = -7;
bool result1, result2;
result1 = (num1 > 0) && (num1 < 5);
result2 = (num2 < 0) || (num2 > 10);
cout << "&& 연산자에 의한 결괏값은 " << result1 << "입니다." << endl;
cout << "|| 연산자에 의한 결괏값은 " << result2 << "입니다." << endl;
cout << " ! 연산자에 의한 결괏값은 " << !result2 << "입니다." << endl;
return 0;
}
✨ 실행결과
&& 연산자에 의한 결괏값은 1입니다.
|| 연산자에 의한 결괏값은 1입니다.
! 연산자에 의한 결괏값은 0입니다.
7. 비트 연산자
아래에 자세하게 정리해놓음
8. 삼항 연산자
a. 삼항 연산자란?
🌟 조건식의 참 거짓을 따져 반환값(값, 수식, 함수 호출 등)을 달리 할 수 있는 연산자
조건식의 값이 참이면 반환값1, 거짓이면 반환값 2를 반환함
짧은 if / else 문 대신에 사용할 수 있으며, 코드를 간결하게 작성할 수 있도록 도와줌
📘 문법
조건식 ? 반환값1 : 반환값2
b. 삼항 연산의 특징
- 유일하게 피연산자를 세개나 가짐
- if / else 문 대신 사용 가능
c. 삼항 연산의 예시
🤓 예제
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 11;
int num2 = 10;
int result;
result = (num1 < num2) ? num1 : num2;
cout << "둘 중에 더 작은수는 " << result << "입니다.";
return 0;
}
✨ 실행결과
둘 중에 더 큰수는 10입니다.
9. 쉼표 연산자
a. 쉼표 연산자란?
🌟 어떠한 연산을 수행하는 것이 아니라 두 연산식을 하나로 나타내거나, 둘 이상의 인수를 함수로 전달하고자 할 때 사용
b. 쉼표 연산의 예시
🤓 예제
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 15, num2 = 8;
cout << "첫 번째 수는 " << num1 << "이고, 두 번째 수는 " << num2 << "입니다.";
return 0;
}
✨ 실행결과
첫 번째 수는 15이고, 두 번째 수는 8입니다.
10. sizeof 연산자
a. sizeof 연산자란?
🌟 피연산자 형식의 개체를 저장하기 위해 필요한 스토리지 공간(바이트)을 제공하고 알려주는 역할
사용자의 컴퓨터 환경에 따라 타입에 할당되는 메모리의 크기가 달라질 수 있어서 이 연산자를 사용하면 컴퓨터 환경에서의 타입 크기를 알아볼 수 있음
📘 문법
sizeof 표현식
sizeof (자료형/표현식)
b. size of 연산의
- 단항 연산자
- 피연산자의 크기를 바위트 단위로 반환
- 피연산자로 타입, 변수, 상수가 올 수 있음
- 변수, 상수가 피연산자이면 그 값에 해당하는 타입의 크기를 반환
b. sizeof 연산자의 예시
🤓 예제
#include <iostream>
using namespace std;
int main(void)
{
cout << " char형 데이터에 할당되는 메모리의 크기는 " << sizeof(char) << " 바이트입니다." << endl;
cout << " short형 데이터에 할당되는 메모리의 크기는 " << sizeof(short) << " 바이트입니다." << endl;
cout << " int형 데이터에 할당되는 메모리의 크기는 " << sizeof(int) << " 바이트입니다." << endl;
cout << " long형 데이터에 할당되는 메모리의 크기는 " << sizeof(long) << " 바이트입니다." << endl;
cout << " long long형 데이터에 할당되는 메모리의 크기는 " << sizeof(long long) << " 바이트입니다." << endl;
cout << " float형 데이터에 할당되는 메모리의 크기는 " << sizeof(float) << " 바이트입니다." << endl;
cout << " double형 데이터에 할당되는 메모리의 크기는 " << sizeof(double) << " 바이트입니다." << endl;
cout << "long double형 데이터에 할당되는 메모리의 크기는 " << sizeof(long double) << " 바이트입니다.";
return 0;
}
✨ 실행결과
char형 데이터에 할당되는 메모리의 크기는 1 바이트입니다.
short형 데이터에 할당되는 메모리의 크기는 2 바이트입니다.
int형 데이터에 할당되는 메모리의 크기는 4 바이트입니다.
long형 데이터에 할당되는 메모리의 크기는 8 바이트입니다.
long long형 데이터에 할당되는 메모리의 크기는 8 바이트입니다.
float형 데이터에 할당되는 메모리의 크기는 4 바이트입니다.
double형 데이터에 할당되는 메모리의 크기는 8 바이트입니다.
long double형 데이터에 할당되는 메모리의 크기는 16 바이트입니다.
11. 포인터 연산자
a. 포인터 연산자 (*) 란?
🌟 포인터 변수 주소 값에 있는 데이터를 출력하는 연산자
++ 예전에 변수를 공부하면서 배웠듯, 변수는 데이터가 저장된 주소와, 데이터의 길이나 형태에 관한 정보도 같이 기억해야 한다!!
b. 주소 연산자 (&) = 번지 연산자 = 참조 연산자
🌟 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환
'&'기호는 앰퍼샌드(ampersand)라고 읽음
c. 포인터 연산자의 예시
🤓 예제 : 정수를 가리키는 포인터와 포인터를 사용해서 접근하기
#include <iostream>
int main() {
int number = 42; // 정수 변수 선언 및 초기화
int* pointer = &number; // 포인터 변수 선언 및 정수 변수의 주소를 할당
std::cout << "변수 number의 값: " << number << std::endl;
std::cout << "포인터 pointer가 가리키는 값: " << *pointer << std::endl;
// 포인터를 사용하여 변수의 값을 변경
*pointer = 99;
std::cout << "변수 number의 값 (포인터를 통해 변경 후): " << number << std::endl;
return 0;
}
✨ 실행결과
변수 number의 값: 42
포인터 pointer가 가리키는 값: 42
변수 number의 값 (포인터를 통해 변경 후): 99
💥 WARNING
*이 붙은 변수는 무조건 데이터를 받아와야 하는데,
위의 예시에서 이미 *p라고 포인터 변수라고 선언한 변수에 p = 4라고 해버리면
주소값을 가르켜야 하는 곳에 데이터를 대입해버려서 치명적 오류가 생김
비슷한 경우로 *p = &b를 하는 경우에도
p의 주소값은 변하지 않고, 데이터도 엉뚱한 값으로 출력됨
12. C++ 연산자 : 범위 지정 연산자
a. 범위 지정 연산자란?
🌟 여러 범위에서 사용된 식별자(identifier)를 식별하고 구분하는데 사용하는 연산자
👉 특히 클래스 내부에서 정적 멤버 변수 또는 정적 멤버 함수에 접근할 때 사용
식별자로 변수, 함수, 열거체가 올 수 있음
📘 문법
1. ::식별자
2. 클래스이름::식별자
3. 네임스페이스::식별자
4. 열거체::식별자
b. 범위 지정 연산자의 특징
가장 우선순위가 높은 연산자는 바로 범위 지정 연산자
c. 범위 지정 연산자의 예제
🤓 예제 : 범위 지정 연산자를 사용한 예시
#include <iostream>
class MyClass {
public:
static int myStaticVariable; // 정적 멤버 변수 선언
static void myStaticFunction() { // 정적 멤버 함수 선언
std::cout << "MyClass의 정적 멤버 함수 호출됨" << std::endl;
}
};
// 정적 멤버 변수의 초기화
int MyClass::myStaticVariable = 42;
int main() {
// 정적 멤버 변수에 접근
std::cout << "MyClass의 정적 멤버 변수 값: " << MyClass::myStaticVariable << std::endl;
// 정적 멤버 함수 호출
MyClass::myStaticFunction();
return 0;
}
✨ 실행결과
MyClass의 정적 멤버 변수 값: 42
MyClass의 정적 멤버 함수 호출됨
13. C++ 연산자 : 멤버 포인터 연산자
a. 멤버 포인터 연산자란?
🌟 클래스의 멤버를 가리키는 포인터를 정의
📘 문법
1. 클래스타입의객체.*멤버이름 //왼쪽의 피연산자가 클래스 타입의 객체
2. 클래스타입객체의포인터->*멤버이름 //왼쪽의 피연산자가 클래스 타입의 객체를 가리키는 포인터
b. 범위 지정 연산자의 예제
🤓 예제 : 멤버 포인터 연산자를 사용한 예시
#include <iostream>
class MyClass {
public:
int myMemberVariable; // 멤버 변수 선언
MyClass(int value) : myMemberVariable(value) {} // 생성자
void myMemberFunction() { // 멤버 함수
std::cout << "MyClass의 멤버 함수 호출됨" << std::endl;
}
};
int main() {
MyClass obj(42); // MyClass 객체 생성 및 초기화
int MyClass::*memberVarPtr = &MyClass::myMemberVariable; // 멤버 변수 포인터 선언 및 초기화
void (MyClass::*memberFuncPtr)() = &MyClass::myMemberFunction; // 멤버 함수 포인터 선언 및 초기화
// 멤버 변수에 접근하여 값을 출력
std::cout << "멤버 변수 값: " << obj.*memberVarPtr << std::endl;
// 멤버 함수를 호출
(obj.*memberFuncPtr)();
return 0;
}
✨ 실행결과
멤버 변수 값: 42
MyClass의 멤버 함수 호출됨
14. C++ 연산자 : typeid 연산자
a. typeid 연산자란?
🌟 객체의 타입에 관한 정보를 확인
💙 사용하는곳
1) 런타임에 객체의 타입을 결정할때
2) 템플릿에서 템플릿 매개변수의 타입을 결정할 때
📘 문법
typeid(표현식)
b. typeid의 예제
🤓 예제
#include <iostream>
#include <typeinfo>
int main() {
int x = 42;
double y = 3.14;
// typeid를 사용하여 변수의 타입 정보 출력
std::cout << "x의 타입: " << typeid(x).name() << std::endl;
std::cout << "y의 타입: " << typeid(y).name() << std::endl;
// typeid를 사용하여 변수의 타입 비교
if (typeid(x) == typeid(y)) {
std::cout << "x와 y의 타입은 같습니다." << std::endl;
} else {
std::cout << "x와 y의 타입은 다릅니다." << std::endl;
}
return 0;
}
✨ 실행결과
x의 타입: i
y의 타입: d
x와 y의 타입은 다릅니다.
출처 : http://www.tcpschool.com/cpp/cpp_operator_arithmetic
http://www.tcpschool.com/cpp/cpp_operator_cpp
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 제어문 총정리 (0) | 2023.09.05 |
---|---|
[게임 프로그래머 입문 올인원] 데이터와 로직 : 조건문, 반복문, 연습문제 (8, 9, 10강) (0) | 2023.09.05 |
[게임 프로그래머 입문 올인원] 데이터와 로직 : 연산 (6, 7강) (4) | 2023.09.05 |
C++ 자료형의 타입 변환 (0) | 2023.09.05 |
[자료형(data type)] C++ 기본형 총정리 (0) | 2023.09.05 |