c语言问题,帮我看一下这道奇葩的题怎么回事??为什么运行是这个结果??

#include<stdio.h>intmain(){char*s="\ta\017bc";char*b="\ta\018bc";char*k="\ta\033bc";f... #include<stdio.h>int main(){ char*s="\ta\017bc"; char*b="\ta\018bc"; char*k="\ta\033bc"; for(;*s!='\0';s++) { printf("*"); } printf("\n"); for(;*b!='\0';b++) { printf("*"); } printf("\n"); for(;*k!='\0';k++) { printf("*"); } printf("\n"); return 0;} 展开
 我来答
匿名用户
2014-01-06
展开全部
哪儿奇葩了???
#include<stdio.h>
int main()

char*s="\ta\017bc"; //\t a \017 b c 共5个字符
char*b="\ta\018bc";//\t a \01 8 b c 共6个字节 \0开始的是八进制数,八进制数没有8,最大为7,所以是\01 8 分开的
char*k="\ta\033bc"; // \t a \033 b c 共5 个字符
for(;*s!='\0';s++) 
printf("*");
printf("\n");
    for(;*b!='\0';b++) 
printf("*"); 
printf("\n"); 
for(;*k!='\0';k++)
printf("*"); 
printf("\n"); 
return 0;
}
百度网友5d9fe08
2014-01-06 · 超过27用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:54.7万
展开全部
没看出奇葩之处啊,感觉挺正常的。如果有疑问,说详细一点
追问
为什么有的输出五颗星,有的输出六颗星??
追答

我现在把每一次输出*时当前的自符出,现在可以更方便的看出把那些看成一起的字符:

中间那个被解释成了制表符,字符a,\01,字符8,字符b,字符c.

为什么不把\018看成一个字符?因为\XXX这种格式的字符是中\后的数字八进制的,只能包含0~7的数字。8当然不能算进去。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanyuan源远
2014-01-06
知道答主
回答量:33
采纳率:0%
帮助的人:28.1万
展开全部
char*s="\ta\017bc";// ={'\t','a','\017'/*八进制17*/,'b','c','\0'}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
银银因
2014-01-06 · 超过14用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:40.1万
展开全部
额,一切正常。。。。。
追问
为什么有的输出五颗星,有的输出六颗星??
追答
因为第二个\018是两个字节直接的\是八进制,没有8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式