Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ISO C&x2B+;禁止指针和整数之间的比较?_C++_Arrays_Pointers_Integer - Fatal编程技术网

C++ ISO C&x2B+;禁止指针和整数之间的比较?

C++ ISO C&x2B+;禁止指针和整数之间的比较?,c++,arrays,pointers,integer,C++,Arrays,Pointers,Integer,代码如下: void option5 (StudentRecord student[], int n) { double gpaThreshold; char enteredMajor; int i; cout << "Enter a GPA threshold: "; cin >> gpaThreshold; cin.ignore(80, '\n'); cout << "Enter a Major: ";

代码如下:

void option5 (StudentRecord student[], int n)

{
   double gpaThreshold;
   char enteredMajor;
   int i;

   cout << "Enter a GPA threshold: ";
   cin >> gpaThreshold;
   cin.ignore(80, '\n');

   cout << "Enter a Major: ";
   cin >> enteredMajor;
   cin.ignore(80, '\n');

   enteredMajor = toupper(enteredMajor);

   for (i = 0; i < n; i++)
   {
      if (student[i].gpa >= gpaThreshold && student[i].major == enteredMajor)
      {
         if (i % 10 == 0)
         {
            cin.ignore();
         }
         cout << setw(3) << right << i+1 << ". "  
         << setw(20) << left << student[i].lastName 
         << setw(20) << left << student[i].firstName 
         << setw(8) << left << student[i].major 
         << fixed << setprecision(2) << setw(8) << left << student[i].earnedHours 
         << fixed << setprecision(2) << setw(6) << left << student[i].gpa << endl;
      }
   }
}

student[i].major
是一个
char
数组;在表达式中使用时,它会衰减为指向
char
的指针。代码将其与类型为
char
enteredMajor
进行相等性比较。因此抱怨:无法比较指针和整数(因为
char
被提升为
int
)。

student[i]。major
是一个
char
数组;在表达式中使用时,它会衰减为指向
char
的指针。代码将其与类型为
char
enteredMajor
进行相等性比较。因此抱怨:无法比较指针和整数(因为
char
被提升为
int
)。

考虑以下片段:

student[i].major == enteredMajor

student[i].major
是一个
char[5]
,在这个上下文中,它被分解为
char*
。这是指针类型

enteredMajor
是一个
char
。这是一种积分型

您无法比较这些类型

也许你的意思是这样写的:
enteredMajor

char enteredMajor[5];
并将它们进行如下比较:

strcmp(student[i].major, enteredMajor) == 0

考虑一下这个片段:

student[i].major == enteredMajor

student[i].major
是一个
char[5]
,在这个上下文中,它被分解为
char*
。这是指针类型

enteredMajor
是一个
char
。这是一种积分型

您无法比较这些类型

也许你的意思是这样写的:
enteredMajor

char enteredMajor[5];
并将它们进行如下比较:

strcmp(student[i].major, enteredMajor) == 0


我忘了提到,它是这样一行:
if(student[I].gpa>=gpaThreshold&&student[I].major==enteredMajor)
如果没有看到struct StudentRecord的声明,很难理解代码应该做什么。我需要在本地声明“I”吗?就像在for循环中一样,这一切都很糟糕。你希望一个字符数组和一个单独的
char
之间的比较做什么?我忘了提到,它是这样一行:
if(student[I].gpa>=gpaThreshold&&student[I].major==enteredMajor)
如果看不到struct StudentRecord的声明,就很难理解代码应该做什么。我需要在本地声明'I'吗?就像在for循环中一样,这一切都很糟糕。您希望在字符数组和单个
char
之间进行什么比较?我可以做什么来修复它?这是我在代码中遇到的唯一问题,否则它会正确编译。我想让代码检查输入的专业是否与数组中的任何当前专业匹配。如果有,请执行for循环中的代码。@Evan-数组包含多个主循环?如果是,则搜索它以查看输入的元素是否与数组中的任何元素匹配。为一个包含5个元素的数组编写代码非常简单,或者您可以使用
memchr
。我想这就是我的代码所做的。我想不是。我不能使用memchr,因为我的教授可能不希望这样。我不想听起来很可怜,但我不知道该怎么做。我能做些什么来修复它?这是我在代码中遇到的唯一问题,否则它会正确编译。我想让代码检查输入的专业是否与数组中的任何当前专业匹配。如果有,请执行for循环中的代码。@Evan-数组包含多个主循环?如果是,则搜索它以查看输入的元素是否与数组中的任何元素匹配。为一个包含5个元素的数组编写代码非常简单,或者您可以使用
memchr
。我想这就是我的代码所做的。我想不是。我不能使用memchr,因为我的教授可能不希望这样。我不想听起来很可怜,但我不知道该怎么做。