Ты прав. Это две ноты. Чтобы узнать, почему это можно сделать, попробуйте этот код:
#include <stdio.h>
int foo(const int a)
{
return !!a;
}
int main()
{
const int b = foo(7);
printf(
"The boolean value is %d, "
"where 1 means true and 0 means false.\n",
b
);
return 0;
}
Он выдает The boolean value is 1, where 1 means true and 0 means false.
Если вы уроните !!
, он выдает The boolean value is 7, where 1 means true and 0 means false.