C编程:布尔
我有一个关于布尔值及其假值和真值的快速问题。我知道0=false和1=true,但根据我作为示例给出的代码,它表示相反 为什么它等于0,当我们想要找到所有23岁以下且具有BEL国籍的用户时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
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