Tout d'abord, veuillez noter que la valeur hexadécimale de Faux est - 0x00
et Vrai, c'est une valeur autre que 0 x 00.
"\0"
est une chaîne de caractères avec un caractère et un Terminateur Null '\0'
à la fin. C'est donc un personnage, qui pointe vers un tableau de 2 octets: ['\0', '\0']
. Dans ce tableau, le premier est le caractère et l'autre est le terminateur null.
Après la compilation (sans optimisation), ce pointeur de caractère est affecté temporairement à une adresse dans la mémoire pointant vers le premier octet de ces deux octets. Cette adresse peut être, par exemple, 0x18A6
en hexadécimal. Ainsi, le compilateur (la plupart d'entre eux) écrit en fait ces deux valeurs pour la mémoire. Parce qu'une chaîne est en fait l'adresse du premier octet de la chaîne, notre expression est interprétée comme 0x18A6 != false
. Donc, il est évident 0x18A6 != 0x00
est Vrai.
'\0'
est tout simplement 0x00
en hexadécimal. 0x00 != 0x00
est Faux.
Cette réponse est écrite pour les 8 bits de données de l'architecture avec l'adressage 16 bits. J'espère que ça aide.