카테고리 없음

[따배시 2.1~2] 기본 자료형 소개, 정수형

기술1 2024. 3. 6. 15:21

먼저 char 이라는 것은 character라는 뜻입니다. 1byte입니다. 

 

출처 cplusplus.com

문장을 저장하려면 character 여러개가 필요합니다. c++에서 stream을 많이 사용합니다.

 

정수 타입으로는 Integer types가 있으며 int는 음의정수, 0, 양의정수를 포함합니다. unsigned int 양의 정수와 0을 포합합니다.  signed하고 unsigned하고 저장되는 방식이 다르기 때문에 for문 같은 특정 연산자를 할 경우 unsigned가 signed보다 빠르기 때문에 구분해서 사용하는 것입니다. 

 

char < short < int < long < long long 순서대로 사용을 합니다. 

 

실수

실수같은 경우 float와 double, long double이 존재합니다. 

 

bool은 true false를 할 때 사용합니다.

#include <iostream>

int main()
{
	using namespace std;

	bool bValue = true;
	char chValue = 'A';
    
    int i = (int)3.1314; //copy initialization
	int a(123); //direct initialization
	int b{ 123 }; //uniform initialization

	return 0;
}

 

copy initialization : =를 사용해 변수를 초기화하는 것입니다. 

직접 초기화(direct initialization): 직접 초기화는 등호()를 사용하여 변수를 초기화하는 것을 의미합니다. 예를 들어, int a(123);와 같이 변수 이름 뒤에 괄호를 사용하여 변수를 초기화하는 것이 직접 초기화입니다.

유니폼(initialization) 초기화: 균일 또는 유니폼 초기화는 중괄호({})를 사용하여 변수를 초기화하는 것을 의미합니다. 예를 들어, int b{ 123 };와 같이 중괄호를 사용하여 변수를 초기화하는 것이 균일 또는 유니폼 초기화입니다
.
두 가지 방법은 대부분의 경우 동일한 결과를 생성합니다. 하지만 몇 가지 상황에서 동작이 약간 다를 수 있습니다. 예를 들어, 균일 또는 유니폼 초기화는 좀 더 엄격한 구문 검사를 수행하며, 초기화할 때 형 변환 오류를 감지할 수 있습니다. 그러나 일반적으로 두 가지 방법 모두 사용될 수 있습니다.

 

 

정수형 2.2 


영역 최소 크기 기타
문자 char 1바이트  
정수 short 2바이트  
  int 2바이트 대부분 4바이트
  long 4바이트  
  long long 8바이트  

 

 

예시코드

#include <iostream>

int main()
{
	using namespace std;

	short		s = 1;
	int			i = 1;
	long		l = 1;
	long long	ll = 1;

	cout << sizeof(short) << endl;
	cout << sizeof(int) << endl;
	cout << sizeof(long) << endl;
	cout << sizeof(long long) << endl;




	return 0;
}

이 코드는 사이즈를 알아보기 위한 것입니다. short 같은 경우는 2바이트를 가질 것이고 int는 4바이트, long은 4바이트 long long은 8바이트를 가질 것입니다. 

실행결과

실행결과도 이렇게 정확히 나오는 것을 보실 수 있습니다. 

 

 

#include <iostream>
#include <cmath>

int main()
{
	using namespace std;

	short		s = 1;

	cout << std::pow(2, sizeof(short) * 8 - 1) -1 << endl; // 2bytes = 2 * 8 bits = 16bits

	return 0;
}

위 코드는 pow() 함수를 사용하여 short의 최대값을 계산하고 출력합니다. pow()함수는 첫 번째 매개변수를 두 번째 매개변수의 거듭제곱으로 계산합니다. 이 경우 2를 short의 비트 수 (16비트)의 -1승으로 계산하여 short 형식의 최대값을 구합니다. 

 

pow함수에 대해서 간단하게 설명하자면

double pow(double base, double exponent);

이렇게 첫번째 인수틑 밑이고 두 번째 인수느 지수입니다. 이 함수는 base의 거듭제곱을 반환합니다. 예를들어 std::pow(2, 3)은 2의 3승인 8을 반환합니다. 

 

Overflow

#include <iostream>
#include <cmath>
#include <limits>

int main()
{
	using namespace std;

	short		s = 1;

	s = 32767;
	s = s + 1;

	cout << " 32768? " << s << endl; //overflow


	return 0;
}

32767 가장 최대의 숫자에서 +1을 해주면 32768이 나오는 것이 아닌 -32768이 나오게 됩니다. 이것을 overflow 라고 합니다. 변수가 표현할 수 있는 범위를 넘어설 경우에 예상치 못한 결과가 나오는 것입니다.