如何把 int * 转换成 unsigned short *

AIGPTchina 2012-09-27 05:06:31

void main()
{
int temp = 9;
int *i= &temp;
unsigned short *j= (unsigned short *)(*i<<8);
printf("\r\n j=%d\r\n",j);
}


结果不对。
...全文
616 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2012-09-27
  • 打赏
  • 举报
回复

int temp = 9; //0x9
int *i= &temp;
unsigned short *j= (unsigned short *)(*i<<8); // *i << 8 == 0x900 == j
printf("\r\n j=%d\r\n",j); //0x900 == 2304



输出2304
alan1985 2012-09-27
  • 打赏
  • 举报
回复
你应该说一下你的程序要做什么
unsigned short *j= (unsigned short *)(*i<<8);
这个,你把一个int强转成一个地址有什么意义吗?
unsigned short *j = (unsigned short *)&temp;这样直接转就可以了
冷月清晖 2012-09-27
  • 打赏
  • 举报
回复
你要什么结果?
Corner 2012-09-27
  • 打赏
  • 举报
回复

int temp = 9;
int *i= &temp;
unsigned short *j= (unsigned short *)i;
printf("\r\n j=%d\r\n",*j);

依赖于大小端,没有可用性。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧