在给定的程序中:
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;
}
Run Code Online (Sandbox Code Playgroud)
它显示输出为:
63 55 0
--?-- --7-- ----
我可以理解它正在将\0 (\077)之后的前两个字符从八进制转换为十进制,但是谁能解释我为什么是 2 个字符,为什么不是 1 或 3 或任何其他字符?
请解释这背后的逻辑。