C语言中函数返回值如果是一个式子,应该写返回值类型是什么?

C语言课本有一段代码如下:
int Ascending(int a, int b)
{
return a < b;
}
这个函数的返回值应该是个整型数,但是却可以返回一个这样的式子,为什么没有报错?如果想让函数返回值是个表达式,那在定义函数的时候应该写其返回值是什么?函数可以return返回数组吗?比如
int a[5];
return a[]; 还是return a;

首先C语言没有bool类型,所以用0表示false,非0(通常是1)表示true。上面的代码a<b会得到一个整形值(0或1),因此函数返回的类型为整形。

第二个问题,通常我们说函数返回数组实际返回的是数组指针。因此应该return a。