强制类型转换

erhan_106 2011-09-05 10:14:17
int a=1;
char s=(char)a;
经过上述转换,为什么s=1而不是s='1'呢?
另外把4字节的int型转化为1字节的char型会不会出现截断,从何处截断的呢?
...全文
75 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
至善者善之敌 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jackyjkchen 的回复:]
int和char本质上都是整数一个4字节一个1字节而已,你这么转换之后不过就是截断了int的高位保留低位而已

'1'的十六进制是0x31,int是0x01怎可能变成0x31
[/Quote]

++1
jackyjkchen 2011-09-05
  • 打赏
  • 举报
回复
int和char本质上都是整数一个4字节一个1字节而已,你这么转换之后不过就是截断了int的高位保留低位而已

'1'的十六进制是0x31,int是0x01怎可能变成0x31
turing-complete 2011-09-05
  • 打赏
  • 举报
回复
是截断高位保留低位,应用举例:

#include <stdio.h>

int isLittleEndian(void)
{
int data = 1;
char *pData = (char*)(&data);
return *pData;
}

int main(int argc, char *argv[])
{
if (isLittleEndian_1())
{
printf("本机存储类型为小端存储\n");
}
else
{
printf("本机存储类型为大端存储\n");
}
return 0;
}
luciferisnotsatan 2011-09-05
  • 打赏
  • 举报
回复
'1'的值是0x31
joyeewen 2011-09-05
  • 打赏
  • 举报
回复
我记得是截断高位。
erhan_106 2011-09-05
  • 打赏
  • 举报
回复
先帮自己顶下,欢迎大家指教,立马给分结贴。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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