Home >Backend Development >C++ >Why am I Getting a \'Compile Error: ISO C Forbids Comparison Between Pointer and Integer\'?

Why am I Getting a \'Compile Error: ISO C Forbids Comparison Between Pointer and Integer\'?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 08:20:02393browse

Why am I Getting a

Compile Error: "ISO C Forbids Comparison Between Pointer and Integer"

When trying to compile a function in C , you may encounter a "compile error: ISO C forbids comparison between pointer and integer." This error results from an attempt to compare a pointer value with an integer.

The Issue

In the provided code snippet:

<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>

The error occurs on the line:

<code class="cpp">if (answer == "y") return true;</code>

Here, the variable answer is declared as a char, while the string literal "y" is a string. Comparing a char pointer to a string literal is forbidden in ISO C , as it can lead to subtle errors.

Solutions

There are two ways to fix this issue:

1. Convert answer to a string:

<code class="cpp">string answer;</code>

This approach is preferred because it aligns with modern C best practices.

2. Use single quotes for the string literal:

<code class="cpp">if (answer == 'y') ...</code>

Single quotes denote a char constant, which is compatible with the char variable answer.

The above is the detailed content of Why am I Getting a \'Compile Error: ISO C Forbids Comparison Between Pointer and Integer\'?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn