> 백엔드 개발 > C++ > C가 포인터와 정수 비교를 금지하는 이유는 무엇입니까?

C가 포인터와 정수 비교를 금지하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-28 08:15:02
원래의
905명이 탐색했습니다.

Why Does C   Forbid Comparing Pointers and Integers?

컴파일러 오류: ISO C의 포인터-정수 비교 금지

Bjarne Stroustrup의 C 교과서에 있는 간단한 함수를 실험하는 동안 개발자는 컴파일 오류가 자주 발생합니다: "ISO C는 포인터와 정수 간의 비교를 금지합니다." 이 오류는 포인터와 정수를 비교할 때 발생합니다.

이 문제의 한 가지 사례는 문자 입력을 문자열 "y"와 비교할 때 발생합니다. 제공된 코드에서:

<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>
로그인 후 복사

코드에서 응답을 문자(char)로 정의하고 "y"는 문자열 리터럴이기 때문에 오류가 발생합니다. 이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.

  1. 문자열 리터럴을 문자로 변환: 문자 입력을 문자 'y'와 비교하려면 답변 == 'y'를 사용하세요. .
  2. 문자 대신 문자열 사용: 답변을 문자열(문자열 답변;)로 선언한 다음 문자열 "y"와 비교합니다.

두 솔루션 모두 정수에 대한 포인터를 다른 정수에 대한 포인터 또는 문자열에 대한 포인터와 비교함으로써 컴파일러의 제한 사항을 해결합니다.

위 내용은 C가 포인터와 정수 비교를 금지하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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