Tại vì Dev-C kiểm tra không kỹ. Với lại đừng code như thế, khó đọc lắm. Tiết kiệm vài cái xuống hàng không làm cho code chạy nhanh hơn hay trông pro hơn tí nào. Nó chỉ làm cho code xấu, người code “gà” hơn hẳn.
Code gốc sau khi sửa nó sẽ như thế này.
bool intset::equal(intset &n){
if(card!=n.card)
return false;
for(int i=0; i<card; i++)
if(!n.member(elems[i]))
return false;
else
return true;
}
Visual Studio nó báo là bởi vì nó thấy ở đây có khả năng không có return nào được gọi.
Thêm một dòng return ở cuối hàm sẽ hết bị báo lỗi
bool intset::equal(intset &n){
if(card!=n.card)
return false;
for(int i=0; i<card; i++) {
if(!n.member(elems[i]))
return false;
else
return true;
}
return false;
}
Có điều code này sai về mặt logic mất tiêu rồi. Vòng for chỉ chạy đúng một lần rồi return true hoặc false.