大一C语言问题

main(){charstr[]={"65"};printf("%c",str[0]);}这程序输出的是6.而main(){charstr[]={"\064"};prin... main()
{ char str[]={"65"};
printf("%c",str[0]);
} 这程序输出的是6.

main()
{ char str[]={"\064"};
printf("%s",str);
} 输出的是4,, 能详细讲一下4是怎么出来的么。 为什么不是像上面哪一个一样6赋值给str[0],5赋值给str[1]? 如果我想把65作为ASCLL值赋值给str 那又应该怎么写呢?
展开
 我来答
匿名用户
2014-01-04
展开全部

你好!

给你一个码表,你对照看看吧,关于10进制、16进制和字符之间的关系,注意红框的地方

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6fe74e2
2014-01-04 · TA获得超过6591个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:215万
展开全部
"\064"双引号当中的 \064是个转义字符,他是8进制的64,也就是10进制的 52
而ASCII码值 52,对应字符4

也就是说
char str[]={"\064"};
相当于
char str[]={"4"};
当然就输出4

如果想把65作为ASCII给str
把65转成8进制 101
也就成了:
char str[]={"\101"};
追问
一定要把65转化为8进制?  没有直接的办法么?
追答
有啊,找到65对应的字符,写进去就行了

65对应大写字母A

char str[]={"A"};
就行了

或者你定好str的长度
char str[2]={0};
str[0]=65;
这样也行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianyuwuse
2014-01-04 · TA获得超过1117个赞
知道小有建树答主
回答量:494
采纳率:100%
帮助的人:231万
展开全部
1、第一个题中的字符串为"65",它的第一个字符是6,所以输出str[0]结果为6;
2、第二个字符串为"\064",其中的\064 是一个转义字符,为八进制数64,换算成十进制数为6*8+4,为52,也就是说此字符串由ASCII码为52的字符和结束符组成。而ASCII为52的是字符'4',所以字符串"\064"相当于"4",因此输出结果为4;
3、想把65作为ASCII码赋值给str[0],方法为char str[]="A";或 char str[] = {65};
或者 char str[10]; str[0] = 65;
更多追问追答
追问
为什么不能这样写呢char str[]={'\064'}; ?
而这样写就可以 char str[]={'a'};
追答
你的上面两个写法都没有错啊,第一个是把字符'4'或者说字符'\064'赋值给str[0]了,而下面的是把字符'a'赋值给str[0]。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linnjing
2014-01-04 · TA获得超过2631个赞
知道大有可为答主
回答量:1230
采纳率:91%
帮助的人:495万
展开全部
\064是八进制的表示法,6*8+4,十进制表示是52,对应'4'的ASCII码。

不明白你要求的65是数值还是字符?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sqiuzhao
2014-01-05 · TA获得超过1347个赞
知道小有建树答主
回答量:967
采纳率:0%
帮助的人:415万
展开全部
不可不戒。。。。。。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式