int isEmptyArray (struct arrayBagStack * b) {
return(!b->count);
}
我将此代码段显示为正确答案。我不理解在期望Int值时返回(!)Not Int值的概念。有人可以解释为什么这会起作用,预期的行为是什么?
count
是struct arrayBagStack
的int成员变量。
答案 0 :(得分:9)
这里发生的类型没有变化。
not运算符(!
)只计算另一个整数值,然后返回。
在这种情况下,它被用于将计数转换为真/假值,以回答数组是否为空的问题。如果b->count
为0,!0
为1
,则表示"为真"。如果它是任何其他值,!
会将其转换为0
,即" false"。
在我看来,这样的代码无法最清晰;它应该只是:
return b->count != 0;
为count
的所有值生成完全相同的值,但更清晰。
答案 1 :(得分:3)
如果count
0
返回1
,则返回值扮演布尔角色,否则返回0
答案 2 :(得分:3)
0
被视为布尔 false
。true
。 true
表示1
。因此当您return(!b->count)
相当于b->count ! = 0
时,会返回true
或false
。但由于return
类型为int
,如果b->count
等于0
,则isEmptyArray
将返回1
,否则为0
答案 3 :(得分:2)
因为你要回来了。
isEmptyArray表示
所以如果b - > count为NULL,那么你想要为空返回true,所以你将它反转
如果b - > count不是NULL你想为非空返回false,所以你反过来
如果你想删除!,那么将函数重命名为isNotEmptyArray以遵循逻辑
答案 4 :(得分:2)
并不是说它会将数据类型从int
更改为!int
。
!
将处理b->count
的值。因此,如果为0,则!b->count
将生成1
,否则为0
。