否定の概要
前回までに論理和、論理積と解説しました。今回もif文の条件としてよく使われる否定について解説していきます。下記の資料に出力表現を掲載します。

否定のサンプルコードを下記に記載します。
コード
#include <stdio.h>
//C言語論理積テストプログラム
int main()
{
int x=20;
int y=50;
int z=30;
printf("%s%d\n","Not((x=y)and(x=z))=",!((x==y)&&(x==z)));
printf("%s%d\n","Not(x<y)and(x>z))=",!((x<y)&&(x>z)));
printf("%s%d\n","Not((x>y)and(x<z))=",!((x>y)&&(x<z)));
printf("%s%d\n","Not((x<y)and(x<z))=",!((x<y)&&(x<z)));
if(x!=20)
puts("true");
else
puts("false");
return 0;
}
'VBA
Option Explicit
Sub notTest()
Dim x As Integer: x = 20
Dim y As Integer: y = 50
Dim z As Integer: z = 30
Debug.Print "Not((x=y)and(x=z))=", Not ((x = y) And (x = z))
Debug.Print "Not((x<y)and(x>z))=", Not ((x < y) And (x > z))
Debug.Print "Not((x>y)and(x<z))=", Not ((x > y) And (x < z))
Debug.Print "Not((x<y)and(x<z))=", Not ((x < y) And (x < z))
If (x <> 20) Then
Debug.Print "true"
Else
Debug.Print "false"
End If
End Sub
Not((x=y)and(x=z)) = 1 (true)
Not((x<y)and(x>z)) = 1 (true)
Not((x>y)and(x<z)) = 1 (true)
Not((x<y)and(x<z)) = 0 (false)
true
この様に表示されたと思います。C言語とVBAで否定を表すコードは違いますが、否定したい式を()でくくります。Not((x=y)and(x=z))をNot(x=y)and(x=z)と書いてしまうと出力が変わってしまうので注意してください。またC言語は=<>(不等号)の前に!マークをつけると不等号を否定します。これも条件文でよく使うのでマスターしましょう。
次回は2次元配列について解説します。