'\ 0'的ASCII值与ASCII值0相同?

Vic*_*r S 4 c

我知道'\ 0'的ASCII值是0,而ASCII值0是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);
Run Code Online (Sandbox Code Playgroud)

输出:

'\0' : 0
'\0' in hex : 0
0 : 0
0 in hex: 0
Run Code Online (Sandbox Code Playgroud)

为什么?

Sha*_*baz 11

ASCII字符'0'与数字不同0.您0在第二对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');
Run Code Online (Sandbox Code Playgroud)

此外,您不需要'在字符串内转义.也就是说,"'"很好,你不需要写"\'"


hou*_*oft 5

你混淆0,'\ 0'和'0'.

前两个是相同的; 它们只表示int值为0.

然而,'0'是不同的,并且表示int具有'0'字符的值,即48.