错误] ISO C ++禁止指针和整数之间的比较[-fpermissive]

时间:2015-11-18 14:38:13

标签: c++ c pointers integer

我是c ++编程的初学者,我在学校有这项活动。我一直得到[错误] ISO C ++禁止在第15行中指针和整数[-fpermissive]之间的比较。你如何解决这个问题?谢谢!

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int pass[5];
int x;
main()
{
    cout<<"\nEnter pin code: ";
    for(x=0;x<=4;x++)
    {
        pass[x]=getch();
        putch('#');
    }   
    if(pass==86222)
        cout<<"\nW E L C O M E!";
    else
        cout<<"\nIncorrect Pin Code";
    getch();
}

3 个答案:

答案 0 :(得分:1)

你正以一种非常奇怪的方式做事。如果你想比较int s。选择int,阅读并比较,为什么需要array

这样做的最简单方法是仅使用int s。

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
main()
{
    int pass;
    cout<<"\nEnter pin code: ";
    cin>>pass;

    if(pass==86222)
        cout<<"\nW E L C O M E!";
    else
        cout<<"\nIncorrect Pin Code";
    getch();
}

如果您想按照自己的方式进行操作,请使用strcmp()

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
char pass[5];
int x;
main()
{
    cout<<"\nEnter pin code: ";
    for(x=0;x<=4;x++)
    {
        pass[x]=getch();
        putch('#');
    }   
    if(!strcmp(pass, "86222"))
        cout<<"\nW E L C O M E!";
    else
        cout<<"\nIncorrect Pin Code";
    getch();
}

答案 1 :(得分:0)

您正在阅读字符并将它们作为整数进行比较。那不会工作......

下面首先将charactes放入一个字符数组中,然后将aray转换为int并比较int:

char passch[6];
int pass, x;
main()
{
    cout<<"\nEnter pin code: ";
    for(x=0;x<=4;x++)
    {
        passch[x]=getch();
        putch('#');
    } 
    passch[5]= '\0';
    pass= atoi(passch);
    if(pass==86222)
        cout<<"\nW E L C O M E!";
    else
        cout<<"\nIncorrect Pin Code";
    getch();
}

答案 2 :(得分:0)

pass是一个数组(在c ++中用指针实现),86222是一个整数。你无法比较那些。

正如@haris在评论中所说,你真的只想将输入存储为整数。你用std::cin >> pass做到这一点。然后您可以将pass与您存储的值进行比较。