在给定的程序中:
int main() {
char *p = "\0777";
printf("%d %d %d\n",p[0],p[1],p[2]);
printf("--%c-- --%c-- --%c--\n",p[0],p[1],p[2]);
return 0;
}
它显示输出为:
63 55 0
--?-- --7-- ----
我可以理解它将\0 (\077) 之后的前两个字符从八进制转换为十进制,但是任何人都可以解释为什么 2 个字符,为什么不是 1 或 3 或任何其他字符?
请解释这背后的逻辑。