我了解到 ‘\0’ 的 ASCII 值是 0,0 的 ASCII 值是 0x30,但是当我尝试使用 printf 打印它们的 ASCII 值时,我得到相同的输出:

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

输出:

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

为什么?

答案

ASCII 字符'0'与数字不同00在你的第二对printfs 而不是'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');

而且,你不需要逃避'字符串内部。"'"很好,你不需要写"\'"

来自: stackoverflow.com