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

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
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
看书上的
%c
%d
介绍
2007-02-06 13:28
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

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

你输出的是什么?


2007-02-06 13:35
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

先更正个问题
你那是
c= "\61"
还是
c= '\61';

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


2007-02-06 13:39
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

那就是1
因为%c是输出一个61对映ASCII的字符
这个61自然是十进制

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

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


2007-02-06 13:44
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

是八进制
不好意思
记错了
2007-02-06 13:49
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

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

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


2007-02-06 13:53
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
%d是输出一个十进制整形数
2007-02-06 13:54
快速回复:[讨论]一个字符的小问题
数据加载中...
 
   



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

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