잔잔이네
article thumbnail

리터럴 상수, 심볼릭 상수


10진수, 8진수, 16진수, 바이너리 (2진수)

#include <iostream>

int main()
{
    using namespace std;

    // Decimal : 0 1 2 3 4 5 6 7 8 9 10
    // Octal   : 0 1 2 3 4 5 6 7 | 10 11 12
    // Hexa    : 0 1 2 3 4 5 6 7 8 9 A B C D E F

    int x = 012; // 8진수 ( 숫자앞에 0이 붙는다. )
    int y = 0xF; // 16진수 ( 숫자 앞에 0x이 붙는다. )

    cout << x << endl;
    cout << y << endl;

    return 0;
}

int x = 012; 처럼 앞에 '0'을 붙이면 8진수로 인식하고, '0x'를 붙이면 16진수로 인식한다.

 

또한 2진법도 가능한데, 바이너리의 경우에는 int x = 0b1001처럼 표시한다.

만약 2진수가 너무 길 경우엔, 0b1001’0000’0001으로 따옴표를 넣어도 된다.

(컴파일러가 (따옴표)를 무시한다. 10진수에서도 가능)


심볼릭 상수

Const

const double gravity{ 9.8 };

const는 고정된 숫자를 표현할 때 사용하고, 컴파일러가 변하는 것을 막아준다. (실수 방지)

그리고 변수만 선언하면 안되고 초기화를 꼭 해주어야한다.

 

컴파일 타임 상수와 런타임 상수

const int my_const(123); // 컴파일타임 상수

	int number;
	cin >> number;

	const int special_number(number); // 런타임 상수

두 가지의 차이는 컴파일할때 이미 값이 결정되어있고

하나는 런타임중에 값이 결정되는 차이가 있다.

C++ 에서 constexpr을 사용하면 컴파일 타임 상수라는 의미이다


const 변수 이용 예

//my_constants.h
#pragma once

namespace constants
{
	constexpr double pi(3.141592);
	constexpr double avogadro(6.0221413e23);
	constexpr double moon_gravity(9.8 / 6.0);
	//..
}

 

#include <iostream>
#include "MY_CONSTANTS.h"

double radius;
	cin >> radius;

	double circumference = 2.0 * radius * constants::pi;

	return 0;

const변수가 많을경우 헤더파일에 모아서 정리한다.

 

double circumference = 2.0 * radius * constants::pi; 에서 constants::pi로 쓸 수 있다.

 

profile

잔잔이네

@잔잔잔잔

🌈

검색 태그