&&,||,! 論理演算子は,関係演算子同様,真の場合には 1,偽の場合には 0 を int型で返します。
| ■論理演算子(Logical Operators) | ||
| x&&y | 論理AND演算子 (Logical AND Operator) | 論理積 (AND,∧):一方が 0の場合には0を,両方とも0以外ならば1を返す。 | 
| x||y | 論理OR演算子 (Logical OR Operator) | 論理和 (OR,∨):一方が 0以外ならば1を,両方とも0ならば0を返す。 | 
| !x | 論理否定演算子 (Logical Negation Operator) | 否定 (NOT,¬):これは (x == 0)と同じ。xが0ならば1を,0以外ならば0を返す。 | 
スカラ型のすべてをオペランドにとれる。
論理積については,第1オペランドが 0 ならば,第2オペランドを評価しません。論理和については,第1オペランドが 0 に等しくなければ,第2オペランドを評価しません。
/* Example 7.6 */
#include <stdio.h>
int main(void)
{
       int x = 0, y = 1;
       printf("(1) !(!x && !y)\t= %d\n", !(!x && !y));
       printf("(2) x||y\t= %d\n", x||y);
       return 0;
}
実行結果です。
(1) !(!x && !y) = 1 (2) x||y = 1
(1) と (2) は同じになります。「ド・モルガンの法則」です。
/* Example 7.7 */
#include <stdio.h>
int main(void)
{
       char c = '\0';
       printf("!'\\0' = %d\n", !c);
       return 0;
}
実行結果です。
!'\0' = 1
ナル文字 '\0' は ASCIIコード番号 0 の文字であり,それは 0 に等しいです。