| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 413 人关注过本帖
标题:char * 转换成 unsigned char *的意义何在?
只看楼主 加入收藏
九宝
Rank: 2
等 级:论坛游民
帖 子:5
专家分:30
注 册:2013-5-18
结帖率:0
收藏
 问题点数:0 回复次数:2 
char * 转换成 unsigned char *的意义何在?
常看到有成效有这样的语句:
const char *s1;
...
c = *(unsigned char *) s1;
...
unsigned char类型的指针和char类型的指针有啥不同。他们不都是指向1Byte的吗,运算不都相同吗,为啥还要这样转换。
2014-12-15 10:02
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:0 
这是根据需要进行的转换,char默认的是signed char  和unsigned char的能表达数值范围不同,如果你的运算与其数值大小无关的话 就不用强制转换了
2014-12-15 10:08
九宝
Rank: 2
等 级:论坛游民
帖 子:5
专家分:30
注 册:2013-5-18
收藏
得分:0 
回复 2楼 wyw19880809
假如有如下程序
char x;
const char *s=&x;
unsigned char y;
y=*(unsigned char *)s;
您的意思是y和x的类型不同需要转换码。

可我觉得x和y 是 unsigned char 到 char的转换,而不是指针变换。
实现 X 到 y 的变换应该是:

y =(unsigned char)*s;
就先求出x的值(*S) 再对其变换,这才是x类型到y类型的变换。

而y=*(unsigned char *)s;是指针的变换。指针变了,指针指向的对象并没有变呀。
2014-12-15 10:38
快速回复:char * 转换成 unsigned char *的意义何在?
数据加载中...
 
   



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

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