const μ νμ
const ν€μλλ₯Ό μ¬μ©νμ¬ λ³μλ₯Ό μ μΈνκ³ μ΄κΈ°ννλ©΄ #defineλ¬Έ λ³΄λ€ λ μ½κ² κΈ°νΈ μμλ₯Ό λ€λ£° μ μλ€.
ex) const int MONTHS = 12;
//μ΄μ λΆν° νλ‘κ·Έλ¨ μμμ 12 λμ μ MONTHSλ₯Ό μ¬μ© κ°λ₯
//μ»΄νμΌλ¬λ μ΄νμ MONTHSμ κ°μ λ³κ²½νλ €λ μ΄λ ν μλλ λΆνμ©
//-> μλν κ²½μ° lvalueκ° νμνλ€λ μλ¬ λ©μμ§λ₯Ό 보λ
lvalue : λμ μ°μ°μμ μΌμͺ½μ μ¬ μ μλ λ³μμ κ°μ κ²
μμλ₯Ό λ§λλ μΌλ°μ νμ
const λ°μ΄ν°ν μμ μ΄λ¦ = κ°;
const μμλ μ μΈν λ κ°μΌλ‘ μ΄κΈ°ννμ§ μμΌλ©΄ λ³κ²½ν μ μλ λ―Ένμ κ°μΌλ‘ λ¨κ²¨μ§λ€.
const int toes; //μ΄ μμ μμ toesμ κ°μ λ―Ένμ
toes = 10; //λ무 λ¦κ² μ΄κΈ°νν¨
#defineλ³΄λ€ constκ° λ μ’μ μ΄μ
1. λ°μ΄ν°νμ λͺ μμ μΌλ‘ μ§μ κ°λ₯
2. c++μ νλλ²μ κ·μΉμ μν΄ κ·Έ μ μλ₯Ό νΉμ ν¨μλ νμΌμμλ§ μ¬μ©ν μ μλλ‘ μ ν κ°λ₯
3. λ°°μ΄, ꡬ쑰체 κ°μ λ°μ΄ν°νμ const μ¬μ© κ°λ₯
λΆλμμμ μν
μμλΆκ° μλ μ, λ§€μ° ν° μ, λ§€μ° μμ μλ₯Ό λνλΌ μ μμΌλ©°, λ΄λΆμ μΌλ‘ μ μνκ³Όλ λ€λ₯Έ λ°©μμΌλ‘ λνλ
λΆλμμμ μνμ μ’ λ₯
float, double, long double
c++ μ΄ λΆλμμμ μλ₯Ό νκΈ°νλ λ°©λ²
1. μΌμμνμμ μ¬μ©νλ νκΈ°λ² 12.34
2. μ§μ νκΈ° 3.45E6 (3.45λ κ°μμ΄κ³ 6μ μ§μ) = 3.45μ 1000000μ κ³±νλΌλ λ»
setf()
μ λ°λλ₯Ό λ μ λΉκ΅ κ°λ₯νκ² κ³ μ μμμ νκΈ°λ‘ κ²°κ³Όλ₯Ό μΆλ ₯νκΈ° μν κ²
νλ‘κ·Έλ¨μ΄ ν° κ°μ μΆλ ₯ν λ μ§μ νκΈ°λ₯Ό μ¬μ©νμ§ μκ³ , μμμ μλ 6μ리κΉμ§ νμ κ°λ₯νκ² ν¨
맀κ°λ³μ ios_base::fixedμ ios_base::floatfieldλΌλ iostreamμ ν¬ν¨
cout.setf(ios_base::fixed, ios_base::floatfield); // μ¬μ©λ²
λΆλμμμ ν μμ
8.24 λ 2.4E8κ³Ό κ°μ λΆλμμμ ν μμλ κΈ°λ³Έμ μΌλ‘ doubleνμΌλ‘ μ μ₯λ¨.
λΆλμμμ ν μμλ₯Ό floatνμΌλ‘ μ μ₯νλ €λ©΄ f λ Fλ₯Ό μ λ―Έμ΄λ‘, long double νμΌλ‘ μ μ₯νκ³ μΆμΌλ©΄
lμ΄λ L μ¬μ©
λΆλμμμ μμ μ₯λ¨μ
μ₯μ 1. μ μμ μ μ μ¬μ΄μ μλ κ°μ λνλΌ μ μλ€.
2. μ€μΌμΌμ μ¬μ©νμ¬ λ§€μ° ν° λ²μμ κ°μ λνλΌ μ μλ€.
λ¨μ 1. μμΉ μ°μ° 보쑰 νλ‘μΈμκ° μλ μ»΄ν¨ν°μμ μ μ μ°μ°λ³΄λ€ μλκ° λλ¦Ό.
2. μ λ°λλ₯Ό μμ μ μλ€.
λ°μ΄ν°ν λ³ν
1. νΉμ λ°μ΄ν°νμ λ³μμ λ€λ₯Έ λ°μ΄ν°νμ κ°μ λμ νμ λ
2. μμμ λ°μ΄ν°λ₯Ό νΌν©νμ¬ μ¬μ©νμ λ
3. ν¨μμ 맀κ°λ³μλ₯Ό μ λ¬ν λ
λμ ꡬ문μμμ λ°μ΄ν°ν λ³ν
c++μμλ μ΄λ€ λ°μ΄ν°νμ κ°μ λ€λ₯Έ λ°μ΄ν°νμ λ³μμ λμ ν λ κ·Έ κ°μ λμ λ λ³μμ λ°μ΄ν°νμΌλ‘ λ³νλ¨.
μλ₯Ό λ€μ΄ so_longμ΄ longνμ΄κ³ thirtyκ° shortνμ΄λΌκ³ ν λ
so_long = thirts; //longν λ³μμ shortν κ° λμ
thirtyμ shortν κ°μ longν κ°μΌλ‘ νμ₯νμ¬ so_longμ λμ (μλμ thirtyλ λ³κ²½λμ§ μμ)
λ°μ΄ν°ν λ³ν
double -> float μ κ°μ΄ ν° λΆλμμμ νμ μμ λΆλμμμ νμΌλ‘ | μ λ°λ(μ ν¨μ«μ)κ° μμ€λλ€. μλ κ°μ΄ λ³νλ°μ΄ν°νμ λ²μλ₯Ό λ²μ΄λ κ²½μ°, κ²°κ³Ό μμΈ‘ λΆκ° |
λΆλμμμ νμ μ μνμΌλ‘ |
μμλΆλ₯Ό μμ΄λ²λ¦Ό. μλ κ°μ΄ λ³ν λ°μ΄ν°νμ λ²μλ₯Ό λ²μ΄λ κ²½μ°, κ²°κ³Ό μμΈ‘ λΆκ° |
long -> short μ κ°μ΄ ν° μ μνμ μμ μ μνμΌλ‘ | μλ κ°μ΄ λ³νλ°μ΄ν°νμ λ²μλ₯Ό λ²μ΄λ κ²½μ°, λκ° νμ λ°μ΄νΈλ€λ§ 볡μ¬λ¨ |
{}λ₯Ό μ¬μ©ν κ²½μ°μ μ΄κΈ°ν λ³ν
λ³μνμ΄ λμ λ κ°μΌλ‘ ννν μ μμ κ²½μ° λ¦¬μ€νΈ μ΄κΈ°νλ narrowingμ νμ©νμ§ μλλ€.
μλ₯Ό λ€μ΄, λΆλμμμ νμ μ μνμΌλ‘ λ³νν κ²½μ° narrowingμ λΆνμ©
λ§μ½, λ³νλ λ³μκ° μλ²½νκ² κ°μ μ μ§ν μ μλ€λ©΄ νμ© κ°λ₯
ex)
const int code = 66;
int x=66;
char c1{31325}; //narrowing, λΆνμ©
char c2={66}; //charκ° 66 μ μ§ κ°λ₯νλ―λ‘ νμ©
char c3={code}; //μμν int λ³μ code 66 νμ©
char c4={x}; //xκ° μμκ° μλμ΄μ νμ© x
x=31325;
char c5=x; //μ΄κΈ°ν νμ© {}λ₯Ό μ¬μ©ν κ²½μ°μ μ΄κΈ°νκ° μλ
μ»΄νμΌλ¬λ xλ λ³μμ΄κ³ λ§€μ° ν° κ°μ κ°μ§ μ μλ€ μκ°ν¨.
xκ° μ΄κΈ°νλκ³ c4κ° xλ₯Ό μ΄μ©ν΄ μ΄κΈ°νλκΈ°κΉμ§ xκ° μ΄λ€ κ°μΌλ‘ λ³νλμλμ§ νμΈνλ κ²μ μ»΄νμΌλ¬μ μν μ΄ μλ.
μμμμμ λ°μ΄ν°ν λ³ν
1. μ΄λ€ λ°μ΄ν°νμ κ·Έλ€μ΄ λνλ λλ§λ€ μλμΌλ‘ λ°μ΄ν°νμ΄ λ³νλ¨
2. μ΄λ€ λ°μ΄ν°νμ μμμμ λ€λ₯Έ λ°μ΄ν°νκ³Ό νΌν©νμ¬ μ¬μ©λμμ λ λ°μ΄ν°νμ΄ λ³νλ¨
μλ λ°μ΄ν°ν λ³ν
μ΄λ€ μμμ κ°μ νκ°ν λ bool, char, unsigned char, signed char, shortν κ°μ λͺ¨λ intνμΌλ‘ λ³νλ¨ (μ΄λ₯Ό μ μ μΉκΈμ΄λΌ ν¨)
trueλ 1, falseλ 0μΌλ‘ λ³νλ¨.
ex)
short chickens = 20;
short ducks = 35;
short fowl = chickens+ducks; // 1. chickensμ ducksμ κ°μ intνμΌλ‘ κ°κ° λ³νλ ν λν¨
2. λν κ²°κ³Όλ₯Ό shortνμΌλ‘ λ€μ λ³ννμ¬ shortν λ³μ fowlμ λμ
--> μ»΄ν¨ν°κ° intνμ λν΄ κ°μ₯ λΉ λ₯΄κ² κ³μ°μ μννκΈ° λλ¬Έ
μλ‘ λ€λ₯Έ λ°μ΄ν°νμ νΌν©νμ¬ μ¬μ©ν λ μΌμ΄λλ λ°μ΄ν°ν λ³ν
νλμ μ°μ°μ λ κ°μ§ λ°μ΄ν°νμ΄ λ€μ΄μμΌλ©΄ μμ ν¬κΈ°μ λ°μ΄ν°νμ΄ ν° ν¬κΈ°μ λ°μ΄ν°νμΌλ‘ λ³νλ¨.
ex) 9.0μ 5λ‘ λλ λ 9.0μ΄ doubleνμ΄κΈ° λλ¬Έμ λλμ μ°μ°μ μννκΈ° μ , intνμΈ 5κ° double νμΌλ‘ λ³νλ¨.
λ°μ΄ν°ν λ³νμ
thornλ³μμ μ μ₯λ intν κ°μ longνμΌλ‘ κ°μ λ‘ λ³ννλ €λ©΄,
1. (long) thorn //thornμ longν λ³ν 리ν΄
2. long (thorn) //thornμ longν λ³ν 리ν΄
λ°μ΄ν°ν λ³νμλ thorn λ³μ μ체λ λ³κ²½νμ§ μμ
μΌλ°μ μ¬μ©λ² //valueλ₯Ό typeNameνμΌλ‘ κ°μ λ³ν
1. (typeName) value
2. typeName (value)
3.static_cast<typeName> (value)
ex)
int auks, bats, coots;
auks = 19.99+11.99; //31.98 -> 31 λμ (int νμ΄λ―λ‘)
coots = int (19.99) + int (11.99); //19+11=30
char ch = 'Z';
cout<<int(ch)<<endl;
cout<<static_cast<int>(ch)<<endl;
cout<<ch;
--> κ²°κ³Ό
90
90
Z
λ°μ΄ν°ν λ³νμλ₯Ό μ¬μ©νλ λ κ°μ§ μ΄μ
1. doubleνμΌλ‘ μ μ₯νμ§λ§ intνμΌλ‘ κ³μ°ν΄μΌ νλ κ°λ€μ μ¬μ©
-> μΈκ΅¬μμ²λΌ λΆλμμμ μλ€μ μ μ κ°μΌλ‘ λͺ¨λΈλ§ν΄μΌ νλ κ³μ°
2. νΉμ λͺ©μ μ λ§κ² κ°μ λ‘ λ°μ΄ν°ν λ³ν