std::cout << "Year " << 1492 << "\n" << std::endl;
위와 같은 코드를 프로그램은 어떤 자료형으로 저장할까?
-> C++은 특별한 이유가 없다면 정수형 상수는 모두 int로 저장한다.
그러나, 특정 접미어를 붙이면 다른 자료형으로 저장한다.
예를 들어, 2022L, 2022UL 과 같은 접미어를 붙이게 되면 unsigned long으로 저장한다.
또는
값이 너무 크서 int형으로 저장할 수 없을 때 다른 자료형으로 저장한다.
char ch;
std::cout << "원하는 문자 입력 : ";
std::cin >> ch; // 'M' 입력
std::cout << "입력한 문자 : " << ch << std::endl; //결과 : M
return 0;
우리는 M에 해당하는 코드인 77을 직접 입력하지 않고, 문자 'M'을 입력했음에도 프로그램은 'M'을 출력한다. 그 이유는
cin이 키보드로부터 입력된 문자를 코드로 변환하고,
cout은 코드를 문자로 변환해서 출력하기 때문이다.
// 변수 thorn을 출력한다고 가정
typename(thorn) // thorn의 typename형을 반환한다!
static_cast<typename> (thorn) // thorn을 typename형으로 반환한다!
char grade = 65;
char grade ='A';
엄밀히 말하자면 다르다.
첫번째 구문은 ASCII 코드를 사용하는 프로그램에서만 문자 'A'를 저장하지만,
두번째 구문은 어떤 시스템이든 'A'라는 문자를 저장한다.
C스타일의 모든 문자열은 구문 끝에 반드시 NULL문자여야 한다!
널 문자 => '\0'
char bird[11] = "Mr. Cheeps"; // \0을 저장한다.
char fis[] = "Bubles"; // 컴파일러가 알아서 처리.
큰따옴표로 묶인 문자열은 끝내기 널 문자를 암시적으로 가지고 있다.
끝에 널 문자를 명시적으로 넣을 필요가 없다.
int higgens;
int *pt = &higgens; // 일반적인 포인터 사용 예시
int *pn = new int; // new를 사용한 예시
일반적인 포인터를 사용하게 되면 변수명 higgens를 통해 해당 메모리 주소를 접근할 수 있고, pt를 통해서도 접근 할 수 있게 되어 통로가 2개가 된다.
but, 두 번째 방식과 같이 선언하면 pn이 유일한 메모리 주소에 접근 가능한 통로가 된다.