#include <iostream>
int main()
{
using namespace std;
char c1(65); // c1 = 65; c1{65};
char c2('A'); // "Hello, World!" // std::string
cout << c1 << " " << c2 << " " << int(c1) << " " << int(c2) << endl;
return 0;
}
먼저
'char c1(65)'는 변수 c1을 선언하고 초기값을 정수 65로 설정합니다. ASCII 코드에서 65는 대문자 'A'를 나타내므로 A가 출력됩니다.
'char c2('A') 는 변수 c2를 설정하고 문자 'A'로 설정합니다. 변수 C1, C2에서는 정수값을 출력합니다.
c1이 A로 나오는 이유는 char c1으로 해주었기 때문입니다. char은 문자형 변수이고 int(c1)은 c1을 정수형으로 변환한 값이므로 각각 A와 65가 나오는 것입니다. 데이터 형식이 다르면 출력 결과가 다르게 나온다는 점을 알아두셔야 합니다.
cout << (char)65 << endl;
그래서 괄호를 치고 이런 식으로 넣어주면 A가 나옵니다.
cout << (int)'A' << endl;
이것을 넣어주면 65가 나옵니다.
cout << static_cast<char>(65) << endl;
cout << static_cast<char>('A') << endl;
static_cast는 C++에서 제공하는 형 변환 연산자 중 하나입니다. 이 연산자는 컴파일 시간에 형식을 변환하는데 사용됩니다. 보다 안전하고 명시적인 형 변환을 위해 사용됩니다. static_cast는 다양한 형 변환을 수행할 수 있으며, 대부분의 경우에 사용할 수 있습니다. 예를 들어, 숫자를 다른 숫자형으로 변환하거나 포인터를 다른 형식의 포인터로 변환하는 데 사용될 수 있습니다.
일반적으로 static_cast는 명시적으로 지정된 형 변환이 안전하다고 가정합니다. 컴파일러가 컴파일 시에 형식을 검사하여 잘못된 형 변환을 방지하려고 노력하지만, 이를 보장할 수 없는 경우가 있습니다.
예를 들어, 정수를 부동 소수점으로 변환하는 경우 소수 부분이 잘릴 수 있습니다. 따라서 이러한 형 변환이 안전하다고 확신할 수 있는 경우에만 static_cast를 사용해야 합니다. 만약 변환에 대한 의도가 불분명하거나 위험이 있을 경우 다른 형 변환 연산자를 사용해야 할 수 있습니다.
#include <iostream>
int main()
{
using namespace std;
char ch(97);
cout << ch << endl;
cout << static_cast<int>(ch) << endl;
cout << ch << endl;
return 0;
}
97은 char이 소문자 a므로 결과적으로 나온느 것을 볼 수 있다. 다만 ch를 static_cast를 써주면 97로 나오는 것을 볼 수 있다.
#include <iostream>
#include <limits>
int main()
{
using namespace std;
char c1(65);
cout << sizeof(char) << endl;
cout << (int)std::numeric_limits<unsigned char>::max() << endl;
cout << (int)std::numeric_limits<unsigned char>::lowest () << endl;
return 0;
}
#include <iostream>
#include <limits>
int main()
{
using namespace std;
char c1(65);
cout << int('\n') << endl;
cout << "This is first line \nsecond line"; //그냥 줄바꿈
cout << "This is first line " << endl; // 버퍼에 있는 것을 무조건 화면에 출력하고 줄을 바꾸는 것
cout << "second line";
return 0;
}
"This is first line \nsecond line";: 문자열을 출력합니다. '\n'은 두 번째 줄로 넘어가는 줄바꿈 문자를 나타냅니다. 그러나 이 줄바꿈 문자는 출력 버퍼에만 저장되고 실제로 화면에 출력되지 않습니다.
"This is first line " << endl;: "This is first line "을 출력하고, endl을 통해 출력 버퍼를 비우고 줄을 바꿉니다. 따라서 이 출력은 화면에 출력되고, 다음 출력은 새로운 줄에 출력됩니다.
"second line";: "second line" 문자열을 출력합니다. 앞서 줄바꿈을 통해 새로운 줄에 출력됩니다. 이러한 코드는 문자형 변수와 문자열 출력, 그리고 특수 문자인 줄바꿈 문자의 사용법을 보여줍니다.
std::flush // 줄바꿈은 하지 않은 채 버퍼에 있는 것을 출력하라
'IT 프로그래밍 > C++' 카테고리의 다른 글
[C++] 피보나치 수열 초보자용 만들기 (0) | 2024.03.08 |
---|---|
[2.9] 심볼릭 상수 (0) | 2024.03.07 |
[따배시 2.6] 불리언 연산자와 조건문 if (0) | 2024.03.07 |
[따배시 2.3~5] C++ 고정 너비 정수, Void, 부동소수점 수 (0) | 2024.03.06 |
[따배시 1.12~14] 헤더가드, 네임스페이스, 전처리기 (0) | 2024.03.05 |