c++大神求教!!明明相等啊!为什么结果是0!
发布网友
发布时间:2024-07-29 17:36
我来回答
共3个回答
热心网友
时间:2024-07-29 18:24
你要比较的是结构体里的值 ,而不是结构体里值 的地址。
left == a.left 这儿left是指left[3] 的首地址,w,e是两个变量,地址肯定不同,最后结果 就是w != e了。
你要这样写
bool operator == (const XM &a)
{
return ( strcmp(left,a.left) == 0 )&& ( strcmp(right,a.right) == 0) && ( strcmp(cqss,a.cqss) == 0 );
}
想要使用 strcmp,要包含头文件 string.h
热心网友
时间:2024-07-29 18:26
left是数组,变量实际存储的是结构体的内存地址,所以你判断相等当然不行了。
==重载函数返回的肯定是false,字符数组相等不能这样判断。
热心网友
时间:2024-07-29 18:26
char left[3]; 类似这种数组的比较是不能直接用 left == a.left的,这个用法比较的应该是两个数组的首地址,所以返回false。