La valeur ASCII de '\0' est la même que la valeur ASCII de 0?

J'ai appris la valeur ASCII de '\0' est 0, et la valeur ASCII de 0 est 0x30, mais lorsque j'essaie d'imprimer leur valeur ASCII à l'aide de printf, j'obtiens le même résultat:

printf("\'\
printf("\'\\0\' : %d\n", '\0');
printf("\'\\0\' in hex : %x\n", '\0');
printf("0 : %d\n", 0);
printf("0 in hex: %x\n", 0);
\' : %d\n"
, '
printf("\'\\0\' : %d\n", '\0');
printf("\'\\0\' in hex : %x\n", '\0');
printf("0 : %d\n", 0);
printf("0 in hex: %x\n", 0);
'
); printf("\'\
printf("\'\\0\' : %d\n", '\0');
printf("\'\\0\' in hex : %x\n", '\0');
printf("0 : %d\n", 0);
printf("0 in hex: %x\n", 0);
\' in hex : %x\n"
, '
printf("\'\\0\' : %d\n", '\0');
printf("\'\\0\' in hex : %x\n", '\0');
printf("0 : %d\n", 0);
printf("0 in hex: %x\n", 0);
'
); printf("0 : %d\n", 0); printf("0 in hex: %x\n", 0);

de sortie:

'
'\0' : 0
'\0' in hex : 0
0 : 0
0 in hex: 0
'
: 0 '
'\0' : 0
'\0' in hex : 0
0 : 0
0 in hex: 0
'
in hex : 0 0 : 0 0 in hex: 0

pourquoi?

C'est un NULL octet, qui est la même chose que zéro.
'\0' est en fait NUL. NULL est un pointeur. (Pas qu'il existe une différence dans C, mais, conceptuellement, elles sont différentes)
Oups, double-exploité le "L" par erreur. Vous êtes correct.

OriginalL'auteur Victor S | 2012-07-02