大一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 那又应该怎么写呢? 展开
{ 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 那又应该怎么写呢? 展开
5个回答
展开全部
"\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"};
而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;
这样也行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
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]。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
\064是八进制的表示法,6*8+4,十进制表示是52,对应'4'的ASCII码。
不明白你要求的65是数值还是字符?
不明白你要求的65是数值还是字符?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可不戒。。。。。。。。。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询