免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1971 | 回复: 3
打印 上一主题 下一主题

整型转化成字符串的困惑? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-11 15:41 |只看该作者 |倒序浏览
一个用遗传算法求最大值的小程序中,给个体用01编码时,用到
char chrom[10];
for(int i=0;i<10;i++)
  chrom[i]=(char)(rand()%2);

charom得不到值,若改成48+(rand()%2)就可以,为什么?都是整形转化成字符型,用char不可以吗?

论坛徽章:
0
2 [报告]
发表于 2006-07-11 15:56 |只看该作者
char 就是8位二进制数字。你没搞明白字符在 C 里面是用数字表示的...

'0' 表示字符“0”,'0' 的值是 48(因为 '0' 的 ASCII 码值为 48)。所以 char c = '0'; 之后,c 这个8位二进制数字的十进制值就是 48,它表示字符 '0'。

而 char c = 0; 表示 c 是一个 ASCII 码为 0 的字符,显然这个字符不是 '0'

论坛徽章:
0
3 [报告]
发表于 2006-07-11 16:37 |只看该作者
精辟

论坛徽章:
0
4 [报告]
发表于 2006-07-11 16:43 |只看该作者
原帖由 fenglimei 于 2006-7-11 15:41 发表
一个用遗传算法求最大值的小程序中,给个体用01编码时,用到
char chrom[10];
for(int i=0;i<10;i++)
  chrom=(char)(rand()%2);

charom得不到值,若改成48+(rand()%2)就可以,为什么?都是整形转化 ...



如果直接得到字符的话,建议使用CString定义chrom[10]

char是个二进制数值,取的ASC码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP