<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.
치환문
대입 연산자를 사용하는 것.
왼쪽 : 변수 or 포인터 변수(간접참조연산자)
오른쪽 : expression (연산식 변수 상수)
변수 : 저장된 값의 변경이 가능한 공간
상수 : 저장된 값의 변경이 불가능한 공간
상수의 종류:
- Literal constant : 이름이 없는 상수
- Symbolic constant : 이름이 있는 상수
선언법 :
- #define CONST1 12 : CONST1이라는 상수를 12로 선언
- const int CONST2 = 12; : CONST2라는 상수를 12로 선언 <-- 많이쓰고 추천되는 타입.
선언해놓은 상수에 다른 값을 대입하려고 하면, compile error가 일어남.
또한, 선언만 하고, 초기화 하지 않으면(값을 넣지 않으면) compile error 가 일어남!
literal 상수의 자료형
: 접미사를 사용함 (U, L, LL)
size of STRING :
s = "abcde" 면 sizeof(s) 하면 결과값은 6이라고 나옴
이유 : 문자 5개에 마지막에 여기가 끝이다 라는 null 문자를 넣어서
상수의 형변환
+/-/*//는 여러가지 형식을 가짐
예를들어 int a ,b 에서 a+b에서 +는 정수 합 연산자
double a, b에서 a+b에서 +는 더블 합 연산자
자동 형변환
수식에서 서로 다른 자료형이 혼합되어 사용되는 경우, 더 큰 자료형으로 통일된다. (implicit type casting)
형변환
연산시 데이터의 자료형이 변환되는 것.
형변환을 잘못하면, 데이터의 일부를 잃을 수 있음.
예시
올림변환 (upcasting)
double f;
f = 1 + 2; // f에는 3.0이 저장된다. 이유 : double형 변수라서
내림변환 (downcasting)
int i;
i = 3.141592; // i에는 3이 저장된다. 이유 : int형 변수라서
명시적인 형변환
형변환 (type cast) : 사용자가 데이터의 타입을 변경하는 것
(자료형)상수 또는 변수
각각 + 연산자는 어떤 연산을 하고 어떤 형 변환이 일어날까?
int i,j; float y,f;
f = i + j; 인트로 + 하고 결과값이 플롯으로 형변환
f = (double)i + j; 더블타입으로 +
f = (double)i + (double)j; 더블타입으로 +
f = (double)((int)y + 3); y를 int로 다운캐스팅하고, 3을 더함 +는 int형 + 연산자, 그결과를 double로 변환
기호 상수(symbolic constant)
가독성이 쉬움
한번에 값을 변경하기 좋음
기호상수 만들기
const int TAX_RATE = 0.15
TAX_RATE = 0.2 // compile error
const로 선언할 수 있음, 상수니까 대문자로 구성해
실행문 안에서 const는 값을 바꿀 수 없어.
오버플로우
short s = SHRT_MAX;
unsigned short u = USHRT_MAX;
cout << "s + 1 : " << (s = s + 1) << endl;
cout << "u + 1 : " << (u = u + 1) << endl;
cout << "SHRT_MAX + 1 : " << SHRT_MAX + 1 << endl;
cout << "USHRT_MAX + 1 : " << USHRT_MAX + 1 << endl;
결과값
s + 1 : -32768
u + 1 : 0
SHRT_MAX + 1 : 32768
USHRT_MAX + 1 : 65536
왜 SHRT_MAX 와 USHRT_MAX에 1을 더하면 오버플로우가 안 일어나는거지? : 얘네는 int 이기 떄문에
열거형 (enumeration type definition)
enum ANIMALS { DOG, CAT, BIRD };
enum FLOWERS { DAISY = 10, ROSE, SUNFLOWER = 20};
얘랑 같은건
#define DOG 0
#define CAT 1
#define BIRD 2
#define DAISY 10
#define ROSE 11
#define SUNFLOWER 20
따로 지정 안하면 123 순서대로 함
실수의 최대 / 최소값과 overflow / underflow
float에서 최대크기보다 더 크면 inf , 최소크기(최소표현단위)보다 더 작으면 0으로 표현됨.
'TIL > [C++ 프로그래밍} TIL' 카테고리의 다른 글
TIL (22.04.03) (0) | 2022.04.08 |
---|---|
TIL (22.04.06) (0) | 2022.04.06 |
TIL (22.03.30) (0) | 2022.03.30 |
TIL (22.03.29) (0) | 2022.03.30 |
TIL (22.03.28) (0) | 2022.03.28 |