C++ bool 函数问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#include
using namespace std;
bool cmp(int a,int b){
if(a>b){
return true;
}
else if(a<b){
return false;
}
}
int main()
{
int a = 5;
int b = 5;
if(cmp(a,b)){
cout << "a> b!" << endl;
}
else{
cout << "a< b!" << endl;
}
return 0;
}

运行结果及报错内容

程序运行结果 a>b!

我的解答思路和尝试过的方法
我想要达到的结果

但实际上我是令a=b的,为什么结果是这样呢?

你函数里就没有处理if(a==b)啊,所以实际函数没有执行任何return语句,返回的是个垃圾值,对于if(cmp(a,b))来说,只要cmp函数返回的不是0,那if语句就成立,所以输出a>b!了。
cmp函数显然有三种状态要返回,大于,小于或等于,所以你用bool类型作为返回值是有问题的,bool只能是两种状态

?你函数里都不给a==b情况的返回值,还能咋办,
所以实际函数没有执行的是默认返回值,返回true.
所有if(cmp(a,b))为真

输出 "a> b!"


int cmp(int a,int b){
if(a>b){
return 1;
}
else if(a<b){
return -1;
}
else{
return 0;
}
}
你可以参考下这篇文章:C++中的bool类型
你还可以看下cpp参考手册中的 c++-atomic_bool