> 백엔드 개발 > C++ > ISO C가 포인터와 정수 비교를 금지하는 이유는 무엇이며 내 코드에서 이 오류를 어떻게 해결할 수 있습니까?

ISO C가 포인터와 정수 비교를 금지하는 이유는 무엇이며 내 코드에서 이 오류를 어떻게 해결할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-10-29 14:05:29
원래의
612명이 탐색했습니다.

Why Does ISO C   Forbid Comparing Pointers and Integers, and How Can I Fix This Error in My Code?

ISO C 비교 오류: 포인터 및 정수

Bjarne Stroustrup의 C 책에서 예제를 작업하는 동안 일부 사용자는 컴파일- ISO C가 포인터와 정수 간의 비교를 금지함을 나타내는 시간 오류입니다. 이 문제는 accept() 함수의 char 변수와 문자열 상수를 포함하는 비교에서 발생합니다.

원인:

ISO C에서는 직접 비교를 금지하기 때문에 오류가 발생합니다. 문자 포인터(예: char*)와 정수(예: 큰따옴표로 묶인 문자의 숫자 값(예: "y")).

해결책:

이 오류를 해결하는 두 가지 기본 방법이 있습니다.

  1. 선호되는 접근 방식: 문자열 변수 사용:

    • 변경 문자열에 대한 응답 유형입니다. 이를 통해 문자열 상수 "y"와 직접 비교하여 문제를 해결할 수 있습니다.
    <code class="cpp">#include <iostream>
    #include <string>
    using namespace std;
    bool accept()
    {
        cout << "Do you want to proceed (y or n)?\n";
        string answer;
        cin >> answer;
        if (answer == "y") return true;
        return false;
    }</code>
    로그인 후 복사
  2. 대체 접근 방식: 작은따옴표 사용:

    • char 변수를 사용해야 하는 경우 문자 상수를 작은따옴표로 묶어 char 상수를 나타냅니다.
    <code class="cpp">#include <iostream>
    #include <string>
    using namespace std;
    bool accept()
    {
        cout << "Do you want to proceed (y or n)?\n";
        char answer;
        cin >> answer;
        if (answer == 'y') return true;
        return false;
    }</code>
    로그인 후 복사

위 내용은 ISO C가 포인터와 정수 비교를 금지하는 이유는 무엇이며 내 코드에서 이 오류를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿