【发布时间】:2012-08-02 15:28:15
【问题描述】:
在给定的程序中:
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 或任何其他?
请解释一下这背后的逻辑。
【问题讨论】:
-
我想你的真实代码有
char *p = "\7777";,前面没有0。
标签: c octal number-systems