程序中需返回int的函数返回逻辑表达式:实际返回值是什么?
这个返回语句实际返回的是
1 或 0(int类型) 咱们一步步拆解这个问题,核心是C语言里逻辑表达式的行为和隐式类型转换:
- 首先,你写的这一长串用
&&连接的表达式,本质是一个布尔逻辑判断:只有当所有条件都成立时,整个表达式的结果才为“真”,否则为“假”。 - 在C语言(C99及以后标准)中,逻辑表达式的结果是
_Bool类型,这个类型只有两个值:1(代表真)和0(代表假)。而因为你的函数声明返回int,编译器会自动把_Bool值隐式转换成int——也就是1还是1,0还是0。
再细化每个条件的判断逻辑:
wordlength > 6.0 && wordlength < 9.0:判断wordlength(double类型)是否落在(6.0, 9.0)这个区间里,满足则为真,否则为假。strcasestr(string, "substringX"):这个函数如果在string里找到指定的子串(忽略大小写),会返回一个非空的指针;找不到则返回NULL。在C的逻辑判断里,非空指针被视为真,NULL被视为假。另外你这里重复写了一次strcasestr(string, "substring2"),不过这不影响逻辑——只要有一个子串找不到,整个&&表达式就会直接短路返回假。
总结一下:
- 当所有条件(平均单词长度在6-9之间,且四个子串(含重复的substring2)都能在string中找到)都满足时,函数返回
1; - 只要有任意一个条件不满足,函数返回
0。
内容的提问来源于stack exchange,提问作者tocsika7
相关产品推荐
相关产品推荐

