C编程:布尔

C编程:布尔,c,boolean,C,Boolean,我有一个关于布尔值及其假值和真值的快速问题。我知道0=false和1=true,但根据我作为示例给出的代码,它表示相反 为什么它等于0,当我们想要找到所有23岁以下且具有BEL国籍的用户时 void opgave_1 (loebsdata2017 *alle_loebsdata2017 ) { int i = 0; for (i = 0; i < MAX_RYTTERE; i++) { if(alle_loebsdata2017[i].rytteralder

我有一个关于布尔值及其假值和真值的快速问题。我知道0=false和1=true,但根据我作为示例给出的代码,它表示相反

为什么它等于0,当我们想要找到所有23岁以下且具有BEL国籍的用户时

void opgave_1 (loebsdata2017 *alle_loebsdata2017 ) {
    int i = 0;
    for (i = 0; i < MAX_RYTTERE; i++) {
        if(alle_loebsdata2017[i].rytteralder < 23 &&
           strcmp(alle_loebsdata2017[i].nationalitet, "BEL") == 0)
        {
            printf("%s %s %d %s \n", alle_loebsdata2017[i].rytternavn,
               alle_loebsdata2017[i].rytterhold,
               alle_loebsdata2017[i].rytteralder,
               alle_loebsdata2017[i].nationalitet);
        }
    }
} 
void optu 1(loebsdata2017*alle_loebsdata2017){
int i=0;
对于(i=0;i

这可被视为:

alle_loebsdata2017[i]。国有化等于
“BEL”

因为当比较的字符串相等时,
strcmp()
函数返回
0

发件人:

什么时候

这可被视为:

alle_loebsdata2017[i]。国有化等于
“BEL”

因为当比较的字符串相等时,
strcmp()
函数返回
0

发件人:


代码中出现的
0
不是布尔值

引用strcmp规范,例如

返回值
如果lhs按字典顺序出现在rhs之前,则为负值。
如果左侧和右侧比较相等,则为零。
如果lhs按字典顺序出现在rhs之后,则为正值


因此,与
0
的比较检查字符串是否等于“BEL”,这正是您所描述的。

代码中出现的
0
不是布尔值

引用strcmp规范,例如

返回值
如果lhs按字典顺序出现在rhs之前,则为负值。
如果左侧和右侧比较相等,则为零。
如果lhs按字典顺序出现在rhs之后,则为正值


因此,与
0
的比较将检查字符串是否等于“BEL”,这正是您所描述的。

如果不知道输入和调用代码等,则无法回答。我发现张贴的代码中没有明显的问题。最好通过调试器运行这段代码,并观察变量的值。在代码中,哪里可以看到等于0的布尔值?如果您指的是
If
条件的最后一部分,您应该查看
strcmp
函数的手册。您指的是
strcmp()的返回值吗
strcmp()
不返回bool,它返回一个整数。看起来“为什么它等于0”这个问题最好被问成“为什么将
strcmp()
与0进行比较?”在不知道输入和调用代码等的情况下不可能回答。我在发布的代码中看不到明显的问题。最好通过调试器运行这段代码,并观察变量的值。在代码中,哪里可以看到等于0的布尔值?如果您指的是
If
条件的最后一部分,您应该查看
strcmp
函数的手册。您指的是
strcmp()的返回值吗
strcmp()
不返回bool,它返回一个整数它看起来像是“为什么它等于0”这样的问题,最好问“为什么将
strcmp()
与0进行比较?”
strcmp(alle_loebsdata2017[i].nationalitet, "BEL") == 0