1. std::endl 은 output 버퍼를 비워주고(flush), '\n'은 그렇지 않다. 버퍼를 자주 비워줘야 한다면 endl 을 쓰고 그렇지 않다면 '\n' 을 사용하면 된다. 버퍼에 대해서는 좀 더 배워서 정리할 예정이다.
2. char 타입의 데이터는 -128 부터 127 까지의 정수를 담을 수 있다. 1 바이트만 차지하기 때문에 숫자를 담기 위한 자료형으로 가끔 사용되기도 하지만, 실제로는 ASCII 문자를 담기 위해 사용한다. ASCII 문자는 문자에 숫자를 매겨 표현하는 것인데 그 범위가 0에서 127까지만 있으면 숫자, 영어 소문자, 대문자, 특수문자가 포함되므로 char 타입에 맞다.
하지만 프로그램에서 -128 부터 127 까지의 수로는 한국어나 중국어, 일본어 등 외국어까지 표현할 수 없다. 그래서 C++는 wchar_t라는 좀 더 큰 문자 데이터 형을 만들었다.
3. 우선순위가 같은 산술 연산자가 두 개 있다면, 왼쪽에 있는 것부터 실행된다.
4. bool 타입의 자료형은 사실 1 비트만 있으면 되지만 1바이트가 할당된다. 그 이유는 CPU 가 메모리를 바이트 단위로 할당해주기 때문이다. 따라서 아무리 작아도 1 바이트는 할당해야 한다.(출처)
5. setw 를 사용해서 출력되는 정보들이 몇 칸을 차지할지 정할 수 있다. 예를 들어 아래 예제에서는 LOCATION 가 8 칸을, POPULATION에 12 칸을 차지하도록 한다. setw을 적용한 정보들은 오른쪽 정렬된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> #include <iomanip> // for setw (input output manipulator) using namespace std; int main() { long pop1=2425785, pop2=47, pop3=9761; cout << setw(8) << "LOCATION" << setw(12) << "POPULATION" << endl << setw(8) << "Portcity" << setw(12) << pop1 << endl << setw(8) << "Hightown" << setw(12) << pop2 << endl << setw(8) << "Lowville" << setw(12) << pop3 << endl; return 0; } // 결과 /* LOCATION POPULATION Portcity 2425785 Hightown 47 Lowville 9761 */ | cs |
6. + 나 * 와 같은 산술 연산자는 이항 연산자다. 만약, 두 항이 각각 다른 데이터 타입이라면 순서(Order)가 낮은(Low) 타입의 데이터가 순서가 높은(High) 타입의 데이터의 자료형으로 변한다.
그렇기 때문에 아래 예제에서 int 타입과 float 타입의 변수를 곱하는 것이므로 값은 float 이 되며, float 이 double 에 대입되므로 최종적으로 totalWeight 는 double 타입의 변수가 된다.
1 2 3 4 5 6 7 8 9 10 11 | #include <iostream> using namespace std; int main() { int count = 7; float avgWeight = 155.5F; double totalWeight = count * avgWeight; cout << "totalWeight = " << totalWeight << endl; // totalWeight = 1088.5 return 0; } | cs |
7. 데이터 타입을 casting 하는 방법은 여러가지가 있다. 전자처럼 static_cast 를 하는 방법도 있고, 후자처럼 할 수도 있다. 그 중에서 전자가 권장되는데 그 이유는 일단 전자가 눈에 띄기 때문에 찾기 쉽고, 검색할 때도 static_cast를 찾으면 되기 때문에 쉽기 때문이다.
1 2 3 4 5 6 | // 전자 aCharVar = static_cast<char>(anIntVar); // 후자 aCharVar = (char)anIntVar; aCharVar = char(anIntVar); | cs |
8. casting 은 꼭 필요할 때만 하는 것이 좋다.
'C++' 카테고리의 다른 글
C++ 토막 지식(19.01.14) - struct, enum (0) | 2019.01.14 |
---|---|
C++ string 또는 char 배열을 int 타입으로 바꾸는 방법 (0) | 2019.01.13 |
UML(Unified Modeling Language)란? (0) | 2019.01.08 |
객체지향 언어의 특성 (0) | 2019.01.07 |
객체지향 프로그래밍(OOP)이 필요한 이유 (0) | 2019.01.05 |