프로그래밍 언어/C++

[C++] 산술연산자와 auto

새싹 개발자 뚜비 2022. 1. 13. 15:07
728x90

판다코딩 C++ 인강 공부 정리


#include <iostream>

using namespace std;

int main() {

	// + - * / %
	int a = 10;
	int b = 3;

	int c = a + b;
	int d = a - b;
	int e = a * b;
	int f = a / b;
	int g = a % b;
	
	cout << "c : " << c << endl;
	cout << "d : " << d << endl;
	cout << "e : " << e << endl;
	cout << "f : " << f << endl;
	cout << "g : " << g << endl;
    
	return 0;
}

 

산술연산자

+ : 두 개의 피연산자의 합을 계산한다.

- : 첫 번째 피연산자에서 두 번째 피연산자의 차를 계산한다.

* : 두 개의 피연산자의 곱을 계산한다.

/ : 첫 번째 피연산자에서 두 번째 피연산자를 나눈다.

% : 첫 번째 피연산자를 두 번째 피연산자로 나누어 나머지를 구한다.

     부동 소수점(실수)에는 사용할 수 없다.

 

#include <iostream>

using namespace std;

int main() {

	// + - * / %
	int a = 10;
	int b = 3;
	int c = 5;

	int mulyiple = a + b * c;  // 25
	
	cout << mulyiple;
    
    return 0;
}

C++가 복잡한 산술 연산을 수행할 수 있을까? 있다.

int mulyiple = a + b * c;

이 경우 C++는 기본적인 수학의 우선순위를 따라간다. (곱하기 -> 더하기)

 

#include <iostream>

using namespace std;

int main() {

	// + - * / %
	int a = 10;
	int b = 3;
	int c = 5;

	int mulyiple = a / b * c;  //15
	
	cout << mulyiple;
    
    return 0;
}

int mulyiple = a / b * c;

이 경우에 C++은 내부적으로 정의한 결합 방향 규칙을 따른다.

나눗셈의 경우, 왼쪽에서부터 오른쪽으로의 결합 방향 규칙을 가지고 있으므로,

먼저 b/a를 수행하고 *c를 연산하게 된다.

 

#include <iostream>

using namespace std;

int main() {

	// auto

	auto n = 100;  // n은 int
	auto x = 1.5;  // x는 float
	auto y = 1.3e12L;  // y는 long long
    
	return 0;
}

auto는 C++만의 데이터형으로 초기화하는 값을 보고 변수형을 추론할 수 있다.

즉, 변수를 선언하고 값을 대입하는게 아닌 선언할 때 값을 대입하는 초기화의 방법을 이용할 때

auto를 사용하면 C++가 자동으로 데이터형을 결정한다.

 

auto를 자주 사용하는건 좋은 코딩습관은 아니다.

예기치 못한 오류를 야기할 수 있기 때문.

728x90