【发布时间】:2018-01-09 15:39:37
【问题描述】:
我有一个关于布尔值及其 false 和 true 值的快速问题。我知道 0=false 和 1=true,但是根据我作为示例给出的代码,它另有说明。
当我们要查找所有23岁以下且具有BEL国籍的用户时,为什么等于0?
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);
}
}
}
【问题讨论】:
-
在不知道输入和调用代码等的情况下无法回答。我在发布的代码中没有发现明显的问题。您最好通过调试器运行此代码并观察变量的值。
-
您在哪里看到该代码中等于 0 的布尔值?如果您指的是
if条件的最后一部分,您应该查看strcmp函数的手册。 -
你的意思是
strcmp()的返回值吗?strcmp()不返回布尔值,它返回一个整数 -
看起来“为什么它等于 0”这个问题最好被问成“为什么将
strcmp()与 0 进行比较?”