(C++) 3.4 sizeof, 쉼표 연산자, 조건부 연산자

이준우·2021년 10월 11일
0
#include <iostream>

int main()
{
	using namespace std;

	float a;

	sizeof(float);
	sizeof(a);
	
	cout << sizeof(float) << endl;
	cout << sizeof(a) << endl;
	
	return 0;
	
}
output = 4
	 4

갑자기 코드부터 나와서 미안하지만, sizeof()같은 경우 저번에 배웠던 거다. 복습하는 용도로 생각하길 바란다. 현재 갖고 있는 data의 크기를 출력하는 것으로 byte가 출력된다. 4가 출력됐으므로 4byte이고 32bit이다. 또한, sizeof()는 함수가 아니라 연산자이다.

comma operator을 살펴보자.

#include <iostream>

int main()
{
	using namespace std;

	//comma operator

	int x = 3;
	int y = 10;
	//int z = (++x, ++y);
	++x;
	++y;
	int z = y;

	cout << x << " " << y << " " << z << endl;
	
	return 0;
	
}
output : 3 11 11

뭐지? 이 comma operator는? int z = (++x, ++y)가 주석처리 되어 있는 것을 확인할 수 있다. 그 아래 코드를 보면 주석된 부분과 동일하게 작동한다. 즉, ++x를 처리한 후, ++y를 처리하고 이를 z변수에 넣는다. 라는 것인데, 실제로 잘 쓰이진 않는다. 많이 쓰인다면 복잡한 for문에서 쓰이긴 한다.

#include <iostream>

int main()
{
	using namespace std;

	//comma operator

	int a = 1, b = 10;
	int z;

	z = a, b;
	
	cout << z << endl;

	return 0;
	
}
output : 1 

이 경우를 정말 조심해야 한다. 위에서 배웠다시피 comma operator 같은 경우 b의 값이 z에 들어가야 하는데 왜 a값이 들어간걸까? 그 이유는 comma 연산자는 대입 연산자보다 우선순위가 낮다. 그래서 (z = a), b;가 되고 b는 아무런 처리를 하지 않고 z에는 a가 들어가서 출력된다.

conditional operator

#include <iostream>

int main()
{
	using namespace std;

	// conditional operator (3항 연산자) (arithmetric if)
	bool onSale = true;

	const int price = (onSale == true)? 10 : 100;

	/*if (onSale)
		price = 10;
	else
		price = 100;*/

	cout << price << endl;

	return 0;
	
}
output : 10

예전에 잠시 3항 연산자에 대해 공부한 적이 있는데, 작동 과정은 그때를 참고하면 될 것 같다. 또한, const도 배웠을 텐데 이도 다시 복습하고 오자. price라는 변수를 변경하고 싶지 않을 때 const로 선언하여 절대로 변하지 않도록 설정하는 것인데, if문을 사용한다면 error를 발생시킨다. 하지만 위의 코드처럼 조건부 연산자를 사용하여 출력하면 문제없이 작동하는 것을 확인할 수 있다.

profile
꿈꾸는 CV

0개의 댓글