【发布时间】:2014-02-11 16:45:27
【问题描述】:
代码 1:
struct demo
{
int a;
}d[2];
int main()
{
d[0].a=5;
d[1]=d[0];
return 0;
}
这段代码运行良好
代码 2:
struct demo
{
int a;
}d[2];
int main()
{
d[0].a=5;
d[1]=d[0];
if(d[0]==d[1])
{
printf("hello");
}
return 0;
}
此代码给出错误
error: invalid operands to binary == (have 'struct demo' and 'struct demo')
为什么代码 2 中会出现此错误?
【问题讨论】:
-
你不能用
==比较任意结构,写你自己的比较函数或者使用memcmp。 -
@Barmar 为什么在这些答案中都提到了
memcmp?我不明白,结构可以有我们不知道值的填充。另一个链接的答案,太奇怪了。
标签: c arrays struct compiler-errors equality