isdigit(c) - 입력 변수는 어떤 데이터 유형이어야 합니까?
소개:
언제 문자 기반 입력을 사용하려면 주어진 입력이 숫자인지 확인하는 것이 중요합니다. isdigit() 함수는 이 목적을 위해 일반적으로 사용되는 도구이지만 다음과 같은 질문을 제기합니다. 입력 변수는 문자(char) 또는 정수(int)여야 합니까?
문자 입력 및 스트림 상태:
Cin은 문자 입력을 읽는 데 사용됩니다. 그러나 입력을 사용하기 전에 스트림이 유효한지 확인하는 것이 중요합니다. 스트림이 닫히면 cin은 입력 변수를 수정하지 않고 반환하여 초기화되지 않은 상태로 둘 수 있습니다.
isdigit() 계약 및 구현:
C 함수 isdigit()에는 정수가 필요합니다. 논쟁. 이 디자인은 문자 코드와 오류 상태를 나타내기 위해 int를 반환하는 원래 C 함수 getchar()에서 유래합니다. 결과적으로 isdigit()는 입력이 int로 변환된 부호 없는 문자라고 가정합니다.
Char의 부호:
C에서 일반 문자는 기호에 따라 부호가 있거나 부호가 없을 수 있습니다. 컴파일러의 구현에 대해. 대부분의 경우 서명이 되어 있습니다. 이로 인해 getchar() 및 isdigit() 함수 계열을 사용할 때 호환성 문제가 발생합니다.
서명된 char의 음수 값은 EOF 표시 값과 충돌하여 잠재적인 중복 및 정의되지 않은 동작이 발생할 수 있습니다. 이를 방지하려면 입력 캐스트를 (부호 없는 문자)로 사용하여 isdigit()를 호출해야 합니다.
코드 예:
<code class="c++">#include <iostream> #include <ctype.h> int main() { char c; cout << "Please enter a digit: "; cin >> c; if (isdigit((unsigned char)c)) cout << "You entered a digit" << endl; else cout << "You entered a non-digit value" << endl; return 0; }</code>
위 내용은 `isdigit(c)`는 `char` 또는 `int` 입력용으로 설계되었습니까? 상세한 검사.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!