C 中允许布尔返回类型吗?

发布于 2024-11-29 01:05:56 字数 555 浏览 0 评论 0原文

当我尝试在 GCC 编译器中编译返回类型为 bool 的函数时,编译器会抛出此错误。

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘comp’

但是当我将返回类型更改为 int 时,它就成功编译了。

其功能如下。

bool comp(struct node *n1,struct node *n2)
{
    if(n1 == NULL || n2 == NULL)
    return false;
    while(n1 != NULL && n2 != NULL)
    {
        if(n1->data == n2->data)
        { n1=n1->link; n2=n2->link; }
        else
            return false;

    }
    return true;
}

这里我正在比较两个链表。 C 是否支持 bool 返回类型?

When I try to compile a function with return type bool in GCC compiler, the compiler throws me this error.

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘comp’

But when I change the return type to int, it is getting compiled successfully.

The function is as below.

bool comp(struct node *n1,struct node *n2)
{
    if(n1 == NULL || n2 == NULL)
    return false;
    while(n1 != NULL && n2 != NULL)
    {
        if(n1->data == n2->data)
        { n1=n1->link; n2=n2->link; }
        else
            return false;

    }
    return true;
}

Here I am comparing two linked lists. Is bool return type supported in C or not?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

执笔绘流年 2024-12-06 01:05:56

bool 在 C99 之前不作为关键字存在。

在 C99 中,它应该可以工作,但正如 @pmg 下面指出的那样,它仍然不是关键字。它是在 中声明的宏。

bool does not exist as a keyword pre-C99.

In C99, it should work, but as @pmg points out below, it's still not a keyword. It's a macro declared in <stdbool.h>.

枕头说它不想醒 2024-12-06 01:05:56

尝试包括:

#include <stdbool.h>

try to include:

#include <stdbool.h>
终遇你 2024-12-06 01:05:56
#include<stdio.h>
#include<stdbool.h>
void main(){
    bool x = true;
    if(x)
        printf("Boolean works in 'C'. \n");
    else
        printf("Boolean doesn't work in 'C'. \n");
}
#include<stdio.h>
#include<stdbool.h>
void main(){
    bool x = true;
    if(x)
        printf("Boolean works in 'C'. \n");
    else
        printf("Boolean doesn't work in 'C'. \n");
}
陌上芳菲 2024-12-06 01:05:56

一种执行手动 bool 的方法

#define true 1
#define false 0
typedef int bool;

bool comp(struct node *n1,struct node *n2)
{
    if(n1 == NULL || n2 == NULL)
    return(false);
    while(n1 != NULL && n2 != NULL)
    {
        if(n1->data == n2->data)
        { n1=n1->link; n2=n2->link; }
        else
            return(false);

    }
    return true;

,即返回 1 或 0,但友好地你会得到 true 和 false;

毕竟 bool 是 1 或 0

a way to do a manual bool

#define true 1
#define false 0
typedef int bool;

bool comp(struct node *n1,struct node *n2)
{
    if(n1 == NULL || n2 == NULL)
    return(false);
    while(n1 != NULL && n2 != NULL)
    {
        if(n1->data == n2->data)
        { n1=n1->link; n2=n2->link; }
        else
            return(false);

    }
    return true;

ie it is returning 1 or 0, but amiably you get as true and false;

After all a bool is a 1 or 0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文