스위치 케이스에서 OR 연산자를 사용할 수 있습니까? 사용자 입력 확인에서 대소 문자 구분을 제거하려고했는데 (그래서이 작업을 모두 수행하는 더 좋은 방법이있을 수 있습니다. 결국 저는 초보자입니다) 물론 이로 인해 스위치 케이스가 두 배로 늘어났습니다 (기본 케이스 제외). ). 이 시점에서 if / else를 사용하는 것이 더 좋을까요, 아니면 케이스에서 다른 조건을 확인하는 방법이 있습니까?
도움이되는 경우 내 코드 :
case 'Y':
case 'y':
cout << "Good, we will check later to ensure your opinion is unchanged." << endl;
break;
case 'N':
case 'n':
cout << "Open your window tonight, unlock the door, take sleep medication, and ignore any noises in your room." << endl;
break;
default:
cout << "Not an answer... think you can play games with me? I'll give you worse than the lemon haters, you'll be better off killing yourself before I take matters into my own hands." << endl;
문자가 소문자인지 대문자인지 구별 할 계획이없는 경우 가장 좋은 해결책은 스위치 변수를 소문자 / 대문자로 "변환"하는 것입니다. 이를 통해 불필요한 경우를 제거하고 새로운 사례를 구현하는 동안 시간을 절약 할 수 있습니다.
귀하의 결정에 따라 std::tolower
또는 std::toupper
다음을 선택할 수 있습니다 .
switch (std::tolower(x)) {
case 'y':
std::cout << "answer1" << std::endl;
break;
case 'n':
std::cout << "answer2" << std::endl;
break;
default:
std::cout << "answer3" << std::endl;
break;
}
OR 문 사용에 대한 질문에 대한 답변-에서 잘 작동하지 않습니다 char
. 모든 문자는 어떤 정수 (ASCII 테이블의 값), 예를 들면 그 수단으로 정의 된 y
값을 가지고 121
있지만, Y
있다 89
.
표현식을 살펴 보겠습니다.에서 case 'y' || 'Y'
반환 된 값 'y' || 'Y'
은 실제로 1
. 어떻게 가능합니까? OR 문 반환 1
인자 중 하나 이상이없는 경우 0
와 0
그렇지 않은 경우. 값이 계산되는 방법은 다음과 같습니다.
case 'y' || 'Y' => case 121 || 89 => case 1
슬프게도 y
또한 ASCII Y
로 정의 되지 않았 1
으므로 스위치는 default
해당 입력에 대 / 소문자를 사용 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다