>백엔드 개발 >C++ >`isdigit(c)`는 `char` 또는 `int` 입력용으로 설계되었습니까? 상세한 검사.

`isdigit(c)`는 `char` 또는 `int` 입력용으로 설계되었습니까? 상세한 검사.

Susan Sarandon
Susan Sarandon원래의
2024-10-29 15:01:021002검색

Is `isdigit(c)` Designed for `char` or `int` Input? A Detailed Examination.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.