[C++] 프로그래밍 기초
프로그램의 기본 요소
- 식별자(identifier)
- 어떤 대상을 유일하게 구별할 수 있는 이름
- 프로그램에서 사용되는 변수나 함수, 구조체나 클래스는 모두 고유의 식별자를 가져야 한다.
- 식별자의 시작은 반드시 문자나 ‘_’
- 키워드(keyword)
- 특별한 의미가 주어진 식별자
- 변수나 함수 등의 식별자로 사용할 수 없다.
- 예. class, bool, case, if/else, inline, goto, auto 등
- 키워드를 식별자로 사용하지 않는 것이 안전하다.
변수, 상수, 자료형
- 변수(variable)
- 어떤 값을 저장하기 위한 메모리 공간
- 변수는 이름을 가지며 특정한 자료형의 값을 저장할 수 있는 공간을 갖고, 안에는 어떤 값이 들어있다.
- 변수의 값은 언제든지 변경할 수 있고, 사용 전에 초기화해야 한다.
- 주소 추출 연산자 &를 적용해 그 변수의 주소를 알 수 있다.
- 상수(constant)
- 변경될 수 없는 자료
- 상수는 숫자보다 이름을 붙여 사용하는 것이 좋은데, 이를 기호상수(symbolic constant) 또는 리터럴(literal)이라고 한다.
- 두 가지 방법으로 상수를 표현할 수 있다.
#define PI 3.141592 // 전처리기 문장을 사용한 상수 PI 선언 const double PI = 3.141592 // const 키워드를 사용한 상수 PI 선언 double area = PI*radius*radius // 리터럴 PI 사용 예시
- 상수는 값을 바꿀 수 없으며 메모리 공간을 차지하지 않으므로 주소가 없다. → 주소 추출 연산자 적용 불가능
- 자료형(data type)
- 기본 자료형(basic type)과 유도 자료형(derived type)으로 나뉜다.
- 정수형 - char(1), short(2), int(4), long(4)
- 실수형 - float(4), double(8)
- 부울형 - bool(1)
- 모든 정수 자료형 앞에 unsigned를 붙이면, 동일한 공간으로 0을 포함한 양수만 표현한다. short는 -32768~32767, unsigned short는 0~65535의 범위를 표현한다.
- char는 주로 단일 문자 표현에 사용된다. 문자형 상수 표현을 위해 작은 따옴표를 사용한다.
- 예. ‘a’, ‘A’, ‘9’, ‘\n’
- bool은 true와 false 값을 가지지만 정수 값으로 변경될 수 있다.
- 실수의 정밀한 표현을 위해 long double형을 사용할 수 있다.
- 자료형의 크기(바이트)는
sizeof
연산자로 알아낼 수 있다. - 정수 자료형에서 오버 플로(overflow)를 주의해야 한다. 저장 가능 범위보다 크거나 작은 값을 저장할 때 발생한다.
- 기본 자료형(basic type)과 유도 자료형(derived type)으로 나뉜다.
- 문자 표현 방법
- 아스키 코드(ASCII code)
- 표준적인 8비트 문자 코드로 0~127 숫자를 이용하여 문자를 표현한다.
- 유니 코드(unicode)
- 전 세계의 모든 문자를 일관되게 표현하고 다룰 수 있도록 설계한 문자 코드 체계다.
- 각 글자는 16비트
- 아스키 코드(ASCII code)
- 대입 연산자
=
- 오른쪽 항의 값을 왼쪽 항에 복사한다.
수식과 연산자
- 산술 연산자
- 정수형과 정수형의 연산 결과는 정수형, 실수형을 포함한 연산의 결과는 실수형이다.
- 정수 나눗셈 연산에 주의하자.
- 6 / 4 == 1
- 6.0 / 4.0 == 1.5
- 증감 연산자
- 피연산자와의 위치에 따라 계산 결과가 달라질 수 있으므로 주의하자.
- 상수나 일반 수식은 피연산자가 될 수 없다.
int a = 10, b = 20; int c = a++; // 문장을 모두 처리하고 a 값을 증가시킴 int d = ++b; // 먼저 b 값을 증가시키고 나머지 문장을 처리함
- 논리 연산자
- 논리곱(AND)
&&
- 논리합(OR)
||
- 논리 부정(NOT)
!
- 단락 논리 - 앞의 결과에 따라 전체 결과가 확정되면 뒤쪽 피연산자는 평가하지 않고 바로 결과를 반환한다.
- 논리곱(AND)
- 조건 연산자
a ? b : c;
: a가 참이면 b 반환, 거짓이면 c 반환- 조건 연산자를 잘 활용하면 코드가 간결해진다.
- 비트 논리 연산자
- 피연산자 정수 값을 비트 단위로 논리 연산을 수행하며, 결과는 새로운 정수 값이다.
3 // 00000000 00000000 00000000 00000011 5 // 00000000 00000000 00000000 00000101 3 & 5 // 00000000 00000000 00000000 00000001 3 | 5 // 00000000 00000000 00000000 00000111 3 ^ 5 // 00000000 00000000 00000000 00000110 ~3 // 11111111 11111111 11111111 11111100
- 피연산자 정수 값을 비트 단위로 논리 연산을 수행하며, 결과는 새로운 정수 값이다.
- 비트 이동 연산자
- 비트 단위로 왼쪽, 오른쪽으로 이동시키는 연산자
<<
: 왼쪽으로 비트 이동, 비는 오른쪽 비트들을 0으로 채운다.>>
: 오른쪽으로 비트 이동, 비는 왼쪽 비트들을 원래 첫 번째 비트 값으로 채운다.5 // 00000000 00000000 00000000 00000101 5>>2 // 00000000 00000000 00000000 00000001 5<<2 // 00000000 00000000 00000000 00010100
- 주소 추출 연산자
&
: 객체 또는 변수의 주소를 알아낸다.
- 역참조 연산자
*
: 주소 값을 나타내는 피연산자와 함께 사용되는데, 그 주소에 들어있는 값을 반환한다.
마치며
코딩하면서 아리송했던 부분이 정리되는 기분이다. 역시 기본이 가장 중요한 법.. 이제 헷갈리지 말자!
출처 게임으로 배우는 C++
Leave a comment