私の質問は単純に見えますが、私はそれについて当惑しています:
bool myBool = TRUE;
if (myBool) printf("1 myBool = true\n");
else printf("1 myBool = false\n");
myBool = !myBool;
if (myBool) printf("2 myBool = true\n");
else printf("2 myBool = false\n");
printf("%d\n", TRUE);
printf("%d\n", FALSE);
そのすべての出力:
1 myBool = true;
2 myBool = false;
1
0
それがアウトプットである理由を理解しています。私の質問は、どうすれば!1
同等になることができるfalse
かということです。CおよびC++では、if
ゼロ以外の値をチェックするためです。そして最後にチェックしたとき:
TRUE = 0x00000001
FALSE = 0x00000000
したがって:
!TRUE = !0x00000001 = 0xfffffffd != 0
編集:この混乱は、aがオンではなくビット単位でnot eax, eax
実行されるx86アセンブリを学習していた期間に起因していると思います(Cの場合と同等)。eax
eax = ~eax