C++프로그래밍/C 와 C++ 기초실습

자료형과 변수, 네임스페이스

season97 2023. 10. 9. 15:21

자료형

 

ㆍ 변수의 종류를 의미하며 기초 자료형(Data Type) 이라고 생각하면된다.

 

※ 변수란?

 

ㆍ 변할 수 있는 숫자나 데이터를 의미

 

ㆍ 컴퓨터로 하여금 값을 저장할 수 있는 메모리 공간에 붙는 이름

 

ㆍ 변수를 이용하면 특정 값을 저장 후 해당 값을 이용한 연산을 처리하는 것이 가능하다.

 

▶ C / C++ 언어에서 지원하는 자료형 종류

 

1. 정수형

정수형 자료형 종류

ㆍ int, short, long 등의 정수형 변수는 전부 signed와 unsigned 키워드를 사용할 수 있다.

 

ㆍ signed와 unsigned 키워드는 음수를 포함할 수 있는지(signed)아니면 양수만을 포함하는지(unsigned)를 결정한다.

 

ㆍ 이런 키워드 없이 선언된 정수현 변수는 기본적으로 signed로 간주된다.

 

※ int의 크기는 window환경에서 32비트에서 4바이트 64비트에서도 4바이트지만 일부 시스템에선 8바이트일 수도 있다.

 

 

 

2. 실수형

실수형 자료형 종류

ㆍ 이 외에도 long double(10~16바이트)라는 매우 큰 실수나 매우 작은 실수를

표시하기 위해 있는 실수자료형도 존재한다. 

 

 

 

3. 문자형

문자형 자료형

ㆍ char는 문자 1개를 저장하는데 사용되며 ASCII코드를 사용하여 문자를 숫자로 변환한다.

 

ㆍ char도 signed와 unsigned가 가능하며 기본값은 컴파일러 설정에 따라 다르다.

 

 

4. 논리형

 

논리형 자료형

ㆍ c언어에서는 논리형에 해당하는 참 또는 거짓이라는 자료형이 별도로 존재하지 않았다.

 

ㆍ c++에 들어와서 참 또는 거짓을 나타내는 키워드인 true / false를 통해 참 거짓을 표현하는것이 가능해졌다.

 

ㆍ 이후 c언어에서도 추가되었다.

 

※ 자료형의 크기와 범위

자료형의 크기와 범위 정리

▶ 변수의 표기법

 

1. 헝가리안

헝가리안

 예전 절차지향적인 방식으로 코딩할 때 이 변수가 어떤 변수인지 알기 위해 서로 약속하듯 그 변수 형태가 뜻하는 약자를 변수 앞에 붙혔다.

 

ㆍ 변수의 이름 앞에 변수의 타입을 나타내는 접두어를 붙혀 사용하는 방식.

 

ㆍ 현재도 일부 개발환경 (특히 WinAPI)에서 사용되고 있지만 객체지향 언어나 동적 타입 언어에서는 잘 사용되지 않는다고 한다. 

 

ㆍ 하지만 게임엔진에서는 다시 사용하는 추세라고 한다.

 

2. 카멜식

카멜

ㆍ 첫 단어를 제외하고 각 단어의 첫글자를 대문자로 쓰는방식

 

ㆍ 객체지향적인 방식의 코딩으로 전환이 되면서 가독성을 위해 한 단어의 앞글자만 표현하는 방법

 

 

3. 파스칼케이스

파스칼케이스

ㆍ 모든 단어의 첫 글자를 대문자로 쓰는 방식

 

ㆍ 주로 클래스 이름에 많이 사용된다.

 

4. 스네이크

스네이크

ㆍ 모든 단어를 소문자로 쓰고 단어 사이에 밑줄을 넣는 방식

 

ㆍ c / c++에서 좋아하는 방식이라고 한다.

 

ㆍ Python에서도 많이 사용된다고 한다.

 

 

 

▶ 네임스페이스 (namespace)

 

ㆍ c++에서 도입된 개념으로 변수, 함수, 클래스 등의 식별자가 서로 충돌나지 않도록 분리해주는 "범위 지정자"

또는 "영역"

 

ㆍ 네임스페이스를 사용하면 같은 이름의 식별자가 있더라도 각각 다른 네임스페이스 내에 존재하기 때문에 충돌 없이 동시에 사용이 가능하다. 

 

네임스페이스 예시

ㆍ First와 Second라는 두 개의 네임스페이스 안에 func()라는 같은 이름의 함수가 정의되어 있지만

네임스페이스를 통해 구분되므로 충돌 없이 사용할 수 있다. 

 

ㆍ 또한 using 키워드를 이용하여 특정 네임스페이스 안의 모든 식별자를 현재 범위로 가져올 수 있다.

 

ㆍ 예를들어 using namespace std; 라고 선언하면 std네임스페이스 안의 모든 식별자들을 직접적인 접근 없이

사용할 수 있게 된다.

 

※ 하지만 using namespace는 편리하지만 여러 문제점을 야기할 수 있다.

 

▶ using namespace std와 using std::cout 의 차이

 

1. using namespace std

 

ㆍc++ 표준 라이브러리의 모든 요소를 현제 범위에 가져온다.

 

ㆍ 즉 std네임스페이스 안에 있는 모든 함수, 클래스 등을 직접적인 접근 없이 사용할 수 있게 된다.

 

ㆍ 컴파일러에게 "std 네임스페이스 안에 있는 모든 것들을 현재 스코프에 직접 접근할 수 있게 해줘" 라고 알려주는 지시자.

 

ㆍ 메모리에 로드되는것은 프로그램에서 실제로 사용하는 객체나 함수 등만 해당됨.

 

⊙ 장점

 

ㆍ 코드를 간결하게 만들어 준다. 매번 std::를 붙여주지 않아도 되므로 작성시간이 단축된다.

 

⊙ 단점

 

ㆍ 만약 다른 라이브러리나 사용자 정의 타입에서 std 네임스페이스와 같은 이름을 가진 식별자가 있다면 충돌이 발생할 수 있는 여지가 있다. 

 

2. using std::cout ,, cin,,등등

 

ㆍ c++ 표준 라이브러리 중에서 특정 요소만 현제 범위에 가져온다.

 

⊙ 장점

 

ㆍ 필요한 요소만 선택적으로 가져오기 때문에 이름 충돌의 가능성을 크게 줄일 수 있다.

 

⊙ 단점

 

ㆍ 필요한 각각의 요소마다 별도로 선언해야 하므로 코드가 길어질 수 있다.

 

 

※ 일반적으로 전체 네임스페이스보다 필요한 개별 요소만 가져오는것이 더 안전한 것 같다.

'C++프로그래밍 > C 와 C++ 기초실습' 카테고리의 다른 글

상수  (1) 2023.10.09
함수  (1) 2023.10.09
조건문  (1) 2023.10.09
반복문과 출력  (1) 2023.10.09
연산자와 c++캐스팅연산자  (1) 2023.10.09