Binary == between 'int' and 'struct member' when both values are int
我有一个结构数组,其中有一个数组。
1 2 3 4 5 6 | struct member{ int num; char name[10]; int m[5]; int counter; }ptr[10]; |
我尝试键入一个条件,比较结构中数组的值和包含该结构的数组的值。当我进行二进制比较时,我得到一个错误,一个是"int",另一个是结构成员。结构成员也是int(一个int值的数组),为什么我会遇到这个问题呢?
1 2 3 4 5 6 7 8 9 | void checkiffriends(){ for(i=0; i < 10; i++){ for(j=0; j < 5; j++){ if(ptr[i].m[j] == ptr[i+1]){ printf("they are friends!", ); } } } } |
你不是在比较两个整数。您试图将m[j]与它所在的结构进行比较。也许您的意思是ptr[i].num或.counter
我假设
- 检查所有其他
ptr[j] 、i!=j ,看i 是否在该其他"人"的m 清单中。
这个假设正确吗?
这会导致
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
不能将结构与整数进行比较。
可以比较两个结构,或者两个整数。
The struct member is also an int (an array with int value)
这是错误的。结构包含整数数组。所以比较它们是没有意义的。
你在if条件下尝试了(i+1)而不是ptr[i+1]吗?我认为这是避免错误的更好方法。
如果我猜对了,您希望将结构成员引用存储在变量m中。
1 2 3 4 5 6 | struct member{ int num; char name[10]; struct member* m; //correction int counter; }ptr[10]; |
你到底想做什么还不清楚,但根据你的错误判断,这可能是:
1 2 3 4 5 6 7 8 9 | void checkiffriends(){ for(i=0; i < 10; i++){ for(j=0; j < 5; j++){ if(ptr[i].m[j] == i){ //Change from ptr[i] to i printf("they are friends!", ); } } } } |