"Invalid operands to binary expression"
"Invalid operands to binary expression"
在我大学的第一年 class 我们刚刚开始摆弄数组,在工作表上我得到了这段代码,但它似乎不起作用。我一直在扫描并寻找问题,但似乎无法解决问题。这是我的代码...
#include <stdio.h>
#include <stdbool.h>
int main(){
int size = 10;
float suspect[size]; //Declaring suspect array
int sizeR = 3;
int sizeC = 10;
float criminals[sizeR][sizeC]; //Declaring criminals array
//Read 10 input values into suspect array from keyboard
printf("Enter the 10 chromosomes of the suspect separated by spaces: \n");
for (int i = 0; i < size; i++)
scanf(" %f", &suspect[i]);
//Read multiple profiles of 10 values into criminals array from the keyboard
for (int i = 0; i < sizeR; i++){
printf("Enter the 10 chromosomes of the %dth criminal: \n", i+1);
//Read 10 input values of a criminal into criminals array from the keyboard
for (int j = 0; j < sizeC; j++)
scanf(" %f", &criminals[i][j]);
}
//Match two profiles
bool match = true;
for (int i = 0; i < size; i++)
if(suspect[i] != criminals[i]) //Error is in this line
match = false;
//Display matching result
if (match)
printf("The two profiles match! \n");
else
printf("The two profiles don't match! \n");
return 0;
}
当我 运行 这段代码时,我返回:
错误:二进制表达式的操作数无效('float' 和 'float [sizeC]')
错误指向匹配的两个配置文件部分中的 !=。对不起,如果解决方案很简单,编码对我来说相对较新,我正在努力使用 Google.
找到解决这个特定问题的方法
在这个 if 语句中
if(suspect[i] != criminals[i]) //Error is in this line
表达式criminals[i]
被隐式转换为类型float *
,因为转换前表达式的原始类型是float[sizeC]
.
此外,表达式 suspect[i]
的类型为 float
。也就是说,将 float
类型的对象与没有意义的 float *
类型的指针进行比较。
因此编译器发出错误信息。
如果您要将数组 suspect
与二维数组 criminals
的元素进行比较,您应该再使用一个内部 for 循环。
在我大学的第一年 class 我们刚刚开始摆弄数组,在工作表上我得到了这段代码,但它似乎不起作用。我一直在扫描并寻找问题,但似乎无法解决问题。这是我的代码...
#include <stdio.h>
#include <stdbool.h>
int main(){
int size = 10;
float suspect[size]; //Declaring suspect array
int sizeR = 3;
int sizeC = 10;
float criminals[sizeR][sizeC]; //Declaring criminals array
//Read 10 input values into suspect array from keyboard
printf("Enter the 10 chromosomes of the suspect separated by spaces: \n");
for (int i = 0; i < size; i++)
scanf(" %f", &suspect[i]);
//Read multiple profiles of 10 values into criminals array from the keyboard
for (int i = 0; i < sizeR; i++){
printf("Enter the 10 chromosomes of the %dth criminal: \n", i+1);
//Read 10 input values of a criminal into criminals array from the keyboard
for (int j = 0; j < sizeC; j++)
scanf(" %f", &criminals[i][j]);
}
//Match two profiles
bool match = true;
for (int i = 0; i < size; i++)
if(suspect[i] != criminals[i]) //Error is in this line
match = false;
//Display matching result
if (match)
printf("The two profiles match! \n");
else
printf("The two profiles don't match! \n");
return 0;
}
当我 运行 这段代码时,我返回:
错误:二进制表达式的操作数无效('float' 和 'float [sizeC]')
错误指向匹配的两个配置文件部分中的 !=。对不起,如果解决方案很简单,编码对我来说相对较新,我正在努力使用 Google.
找到解决这个特定问题的方法在这个 if 语句中
if(suspect[i] != criminals[i]) //Error is in this line
表达式criminals[i]
被隐式转换为类型float *
,因为转换前表达式的原始类型是float[sizeC]
.
此外,表达式 suspect[i]
的类型为 float
。也就是说,将 float
类型的对象与没有意义的 float *
类型的指针进行比较。
因此编译器发出错误信息。
如果您要将数组 suspect
与二维数组 criminals
的元素进行比较,您应该再使用一个内部 for 循环。