<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.

치환문

대입 연산자를 사용하는 것.
왼쪽 : 변수 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