首页 > 后端开发 > C++ > 为什么 ISO C 禁止比较指针和整数,以及如何修复代码中的此错误?

为什么 ISO C 禁止比较指针和整数,以及如何修复代码中的此错误?

Barbara Streisand
发布: 2024-10-29 14:05:29
原创
631 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板