-
[C++ 프로그래밍] 정수형 데이터2024년 06월 21일
- 유니얼
-
작성자
-
2024.06.21.:03
728x90C++ 기초 프로그래밍: 정수형 데이터 초기화 방법
C++ 프로그래밍에서 변수의 초기화는 매우 중요한 개념입니다. 특히, 정수형 데이터를 초기화하는 방법은 다양한 방식이 존재하며 각각의 방식은 고유한 특성과 장단점을 가지고 있습니다. 이번 블로그 글에서는 C++에서 정수형 데이터를 초기화하는 방법에 대해 자세히 알아보겠습니다.
1. 중괄호 초기화 (Braced Initializers)
중괄호 초기화는 C++11부터 도입된 초기화 방법으로, 초기화 리스트(initializer list)라고도 불립니다. 이 방법은 변수의 초기값을 설정할 때 가장 안전한 방법 중 하나로 여겨집니다.
int elephant_count; // 초기화되지 않은 변수. 경고: 무작위 값 포함 가능 int lion_count{}; // 0으로 초기화 int dog_count{10}; // 10으로 초기화 int cat_count{15}; // 15로 초기화 int domesticated_animals{dog_count + cat_count}; // 표현식을 사용한 초기화 // 주석 처리된 코드: 존재하지 않는 변수 사용 시 컴파일 에러 발생 // int new_number{doesnt_exist}; // 컴파일 에러: 소수점을 포함한 값을 정수로 변환 불가 // int narrowing_conversion{2.9}; std::cout << "Elephant count : " << elephant_count << std::endl; std::cout << "Lion count : " << lion_count << std::endl; std::cout << "Dog count : " << dog_count << std::endl; std::cout << "Cat count : " << cat_count << std::endl; std::cout << "Domesticated animal count : " << domesticated_animals << std::endl;
중괄호 초기화의 주요 장점은 초기화되지 않은 변수의 사용을 방지하고, 잘못된 형 변환(narrowing conversion)을 방지할 수 있다는 점입니다.
2. 함수 스타일 초기화 (Functional Initialization)
함수 스타일 초기화는 변수를 초기화할 때 마치 함수를 호출하는 것처럼 보이는 초기화 방법입니다. 중괄호 초기화에 비해 덜 엄격하며, 때로는 정보 손실이 발생할 수 있습니다.
int apple_count(5); int orange_count(10); int fruit_count(apple_count + orange_count); // 주석 처리된 코드: 존재하지 않는 변수 사용 시 컴파일 에러 발생 // int bad_initialization(doesnt_exist3 + doesnt_exist4); int narrowing_conversion_functional(2.9); // 정보 손실 발생: 2로 초기화 std::cout << "Apple count : " << apple_count << std::endl; std::cout << "Orange count : " << orange_count << std::endl; std::cout << "Fruit count : " << fruit_count << std::endl; std::cout << "Narrowing conversion : " << narrowing_conversion_functional << std::endl; // 정보 손실
이 초기화 방법은 간결하지만, 형 변환에 대한 엄격한 검사를 수행하지 않기 때문에 정보 손실이 발생할 수 있습니다.
3. 할당 스타일 초기화 (Assignment Initialization)
할당 스타일 초기화는 가장 기본적인 초기화 방법으로, 등호(=)를 사용하여 변수를 초기화합니다. 이 방법 역시 형 변환에 덜 엄격합니다.
int bike_count = 2; int truck_count = 7; int vehicle_count = bike_count + truck_count; int narrowing_conversion_assignment = 2.9; // 정보 손실 발생: 2로 초기화 std::cout << "Bike count : " << bike_count << std::endl; std::cout << "Truck count : " << truck_count << std::endl; std::cout << "Vehicle count : " << vehicle_count << std::endl; std::cout << "Narrowing conversion : " << narrowing_conversion_assignment << std::endl;
할당 스타일 초기화는 익숙하고 사용하기 쉬운 방법이지만, 함수 스타일 초기화와 마찬가지로 정보 손실에 대해 주의해야 합니다.
sizeof 연산자를 사용한 변수 크기 확인
변수의 크기를 확인할 때는 sizeof 연산자를 사용할 수 있습니다. 이 연산자는 변수의 크기를 바이트 단위로 반환합니다.
std::cout << "sizeof int : " << sizeof(int) << std::endl; std::cout << "sizeof truck_count : " << sizeof(truck_count) << std::endl;
위 예제에서는 int 타입 변수의 크기를 확인하여 출력합니다.
전체예제 코드
#include <iostream> int main() { std::cout << std::endl; std::cout << "----------" << "Braced Initializers" << "----------" << std::endl; std::cout << std::endl; // 중괄호 초기화 (Braced Initializers) // 중괄호 초기화는 C++11부터 도입된 초기화 방법으로, 초기화 리스트(initializer list)라고도 불립니다. // 이 방법은 변수의 초기값을 설정할 때 가장 안전한 방법 중 하나로 여겨집니다. int elephant_count; // 초기화되지 않은 변수. 경고: 무작위 값 포함 가능 int lion_count{}; // 0으로 초기화 int dog_count{10}; // 10으로 초기화 int cat_count{15}; // 15로 초기화 int domesticated_animals{dog_count + cat_count}; // 표현식을 사용한 초기화 // 주석 처리된 코드: 존재하지 않는 변수 사용 시 컴파일 에러 발생 // int new_number{doesnt_exist}; // 컴파일 에러: 소수점을 포함한 값을 정수로 변환 불가 // int narrowing_conversion{2.9}; std::cout << "Elephant count : " << elephant_count << std::endl; std::cout << "Lion count : " << lion_count << std::endl; std::cout << "Dog count : " << dog_count << std::endl; std::cout << "Cat count : " << cat_count << std::endl; std::cout << "Domesticated animal count : " << domesticated_animals << std::endl; // 함수 스타일 초기화 (Functional Initialization) // 함수 스타일 초기화는 변수를 초기화할 때 마치 함수를 호출하는 것처럼 보이는 초기화 방법입니다. // 중괄호 초기화에 비해 덜 엄격하며, 때로는 정보 손실이 발생할 수 있습니다. std::cout << std::endl; std::cout << "----------" << "Functional Initialization" << "----------" << std::endl; std::cout << std::endl; int apple_count(5); int orange_count(10); int fruit_count(apple_count + orange_count); // Information lost. less safe than braced initializers int narrowing_conversion_functional(2.9); std::cout << "Apple count : " << apple_count << std::endl; std::cout << "Orange count : " << orange_count << std::endl; std::cout << "Fruit count : " << fruit_count << std::endl; std::cout << "Narrowing conversion : " << narrowing_conversion_functional << std::endl; // Will loose info // 할당 스타일 초기화 (Assignment Initialization) // 할당 스타일 초기화는 가장 기본적인 초기화 방법으로, 등호(=)를 사용하여 변수를 초기화합니다. // 이 방법 역시 형 변환에 덜 엄격합니다. std::cout << std::endl; std::cout << "----------" << "Assignment Initialization" << "----------" << std::endl; std::cout << std::endl; int bike_count = 2; int truck_count = 7; int vehicle_count = bike_count + truck_count; int narrowing_conversion_assignment = 2.9; std::cout << "Bike count : " << bike_count << std::endl; std::cout << "Truck count : " << truck_count << std::endl; std::cout << "Vehicle count : " << vehicle_count << std::endl; std::cout << "Narrowing conversion : " << narrowing_conversion_assignment << std::endl; // Check the size with sizeof std::cout << "sizeof int : " << sizeof(int) << std::endl; std::cout << "sizeof truck_count : " << sizeof(truck_count) << std::endl; // ----------Braced Initializers---------- // Elephant count : 32760 // Lion count : 0 // Dog count : 10 // Cat count : 15 // Domesticated animal count : 25 // ----------Functional Initialization---------- // Apple count : 5 // Orange count : 10 // Fruit count : 15 // Narrowing conversion : 2 // ----------Assignment Initialization---------- // Bike count : 2 // Truck count : 7 // Vehicle count : 9 // Narrowing conversion : 2 // sizeof int : 4 // sizeof truck_count : 4 return 0; }
결론
C++에서 정수형 데이터를 초기화하는 방법에는 중괄호 초기화, 함수 스타일 초기화, 할당 스타일 초기화가 있으며, 각각의 초기화 방법은 고유한 특성과 장단점을 가지고 있습니다. 중괄호 초기화는 가장 안전한 방법으로 추천되며, 함수 스타일 초기화와 할당 스타일 초기화는 정보 손실에 대해 주의가 필요합니다. 프로그램 작성 시 적절한 초기화 방법을 선택하여 변수 초기화를 관리하는 것이 중요합니다.
반응형다음글이전글이전 글이 없습니다.댓글