C++

잡다한 문법 지식들 (1)

(ꐦ •᷄ࡇ•᷅) 2025. 1. 8. 10:41

문자와 for문

for(ch = 'a'; ch <= 'z'; ch++)

strcmp

ASCII 코드에서는 대문자가 소문자보다 코드가 낮기 때문에 조회 순서가 더 빠르다. 따라서 이런 것도 가능하다.

// str1이 str2보다 아스키 코드 상 앞 순번의 문자열인지
strcmp(str1, str2) < 0

// str2가 str1보다 아스키 코드 상 앞 순번의 문자열인지
strcmp(str1, str2) > 0

cin

int n;
cin >> n;

 

이 경우에 사용자가 수를 입력하는 대신 단어를 입력하면 무슨 일이 벌어질까?

  • n의 값은 변하지 않는다.
  • 입력 큐에 잘못된 입력이 그대로 유지된다.
  • cin 객체의 에러 플래그가 설정된다.
  • cin 메서드 호출이 false를 리턴한다.

cin 메서드가 false를 리턴한다는 사실은, 수를 읽어들이는 루프를 종료시키기 위해 수가 아닌 입력을 사용할 수 있다는 것을 의미한다. 

// 숫자 말고 다른 문자 입력시 루프가 멈춤.
int n;
while(cin >> n)
{
	// loop
}

 for문으로 조합 구현하기

double result = 1.0;
for(n = numbers, p = picks; p > 0; n--, p--)
	result = result * n / p;

 

이렇게 하면 모든 곱셈을 먼저 처리하는 것보다 중간 계산값을 작게 유지할 수 있다.