| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 922 人关注过本帖
标题:[讨论]一个字符的小问题
取消只看楼主 加入收藏
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
 问题点数:0 回复次数:6 
[讨论]一个字符的小问题

int main (void)
{
char c[]="\61W\1";
int i;
printf ("%c\n", c[0]);
printf ("%c\n", '\127');
for (i = 0; c[i] != '\0'; i++)
printf ("%d ", c[i]);

return 0;
}
这个程序,怎么第一个printf输出的是1(按8进制?8进制的61转换成10进制后恰好是49--1的ASCII码)

第二个输出的是W(8进制的127转换成10进制后恰好是87--W的ASCII码)

但是在for循环里面,输出的是49 87 1,又刚好是按10进制转换.

我被搞懵了,到底是按8进制还是10进制转换哦?还是在特定情况下会不同?

搜索更多相关主题的帖子: 字符 
2007-02-06 13:24
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

我的意思是,就给你一个c= "\61"
printf ("%c", c);

你输出的是什么?


2007-02-06 13:35
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 
...弄错了
是'\61'


2007-02-06 13:39
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

你好像弄错了
1的ASCII码是49
所以说他这里输出1的原因好象是按照8进制转换的
61转过来就是10进制的49


2007-02-06 13:44
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

我就是这里搞不懂了
书上明明说是按10进制转换的啊
为什么这里又是8进制

但是如果 c = '1'
printf ("%d", c);
这里又输出的是49,又是按10进制
都糊涂了,不知道什么时候该用几进制


2007-02-06 13:53
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 
哦!这个差点忘了!
楼上的意思是不是 c='\n'(n为一个数);
然后输出c这个字符的时候,n是按8进制转换的

c = 'n';(n为一个字符)
而printf ("%d", c);则是按10进制

2007-02-06 14:00
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 
恩,这个我明白了
那第一种情况呢?

c = '\23'
printf ("%c", c);

是不是把23转换成10进制的19,然后输出19对应的ASCII码

2007-02-06 14:10
快速回复:[讨论]一个字符的小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016433 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved