This question already has answers here:
Closed 5 years ago.
What is “!!” in C? [duplicate]
(7个答案)
在C中,两次求反有什么有效的用法?例如,类似于:
if (!!my_cond) {

}

据我所知,如果!!!!my_cond的话,my_cond将保证false为0,否则为1。你什么时候需要用这个?

最佳答案

在您显示它的上下文中,它是无用的,因为值本身的计算结果是01
它可以在不做这种“布尔”转换的上下文中使用,例如算术或索引。

size_t zerovalues[2] = { 0, 0, };

for (size_t i = 0; i < N; ++i)
    ++zerovalues[!!A[i]];

最后,你将得到Azerovalues[0]的值0的个数和不在zerovalues[1]中的值的个数

08-07 17:04