如何在c语言中使用布尔函数

如何在c语言中使用布尔函数,c,boolean,C,Boolean,任何人请告诉我,这个代码有什么问题 #include<stdio.h> bool func(char *,int); void main() { char *a="Interview"; if(func(a,9)) { printf("True"); } else { printf("False"); } } bool func(char *s, int len) { if(len < 2)

任何人请告诉我,这个代码有什么问题

#include<stdio.h>
bool func(char *,int);
void main()
{
   char *a="Interview";
   if(func(a,9))
   {
      printf("True");
   }
   else
   {
      printf("False");
   }

}
bool func(char *s, int len)
{
   if(len < 2)
      return true;
   else
      return s[0] == s[len-1] && func(&s[1], len-2);
}
#包括
布尔函数(字符*,整数);
void main()
{
char*a=“面试”;
if(func(a,9))
{
printf(“真实”);
}
其他的
{
printf(“假”);
}
}
布尔函数(字符*s,整数len)
{
if(len<2)
返回true;
其他的
返回s[0]==s[len-1]&func(&s[1],len-2);
}

我相信这个函数总是返回
TRUE
。这是一个面试问题。但是,当我试图编译它时,它显示了6个错误

我猜它不知道什么是
bool
true
bool
不是C语言中的基本数据类型,您需要额外的包含:

#include <stdbool.h>
这是真的。您可以跳过这里的递归逻辑,因为它不会修改字符串,只需查看第一部分:

s[0]     // this has to be 'I'
==       // we need so what we compare against has to be 'I' as well
s[len-1] // This will be 'w'

所以。。。这不会变成真的。。。谁关心递归部分的ANDIN(
&&
)呢?我怀疑编译器甚至会对此进行优化,因为这里的所有内容都是硬编码的。

您只需包含正确的标题即可

#include <stdbool.h>
#包括

或者,您可以使用不需要包含任何内容的
\u Bool
类型
bool
只是此类型的别名。顺便说一下,别忘了用C99编译。

您缺少
#include
main
的返回类型应为
int
。您可以使用int代替bool,使用1/0代替true/false。或者#define bool int,#define true 1,#define false 0语法错误:标识符'func'@JX是的,我可以,但这是一个面试问题。。所以我不能对这个修正做任何修正,bool不是一个原始数据类型,但它是C99中的标准数据类型,下面(因此stdbool)请修正我。。。特定函数将始终返回
TRUE
或not\,因为<代码>s[len-1]&函数(&s[1],len-2)最后
func(&s[1],len-2)
返回
TRUE
,这意味着它变成
s[len-1]&&TRUE
,除
0
之外的任何内容也被称为
TRUE
。这就是为什么。请纠正我。如果我的逻辑是错误的。@coders-对。。。所以
s[len-1]&&true
将是真的,但它不会就此结束。。。您需要有
s[0]==s[len-1]
才能使其为真。那是不可能的。查看我的文章中关于logic@Mike谢谢但是程序显示错误。
致命错误C1083:无法打开包含文件:“stdbool.h”:没有这样的文件或目录
为什么会这样??
#include <stdbool.h>