0xffffff8b 如何去掉ffffff!!!!!!

xspace_time 2012-09-26 06:33:00
#include<stdio.h>
int main()
{
int i=0xffffff8b;
char m=i&0xff;
printf("%x",m);
return 0;
}
...全文
201 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoming262350 2012-09-26
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
int i= 0xffffff8b;
char m=i&0xff;
printf("%x\n",(unsigned char)m);
return 0;
}
这个也可以实现
zhaoming262350 2012-09-26
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
int i=0xffffff8b;
unsigned char m=i&0xff;
printf("%x\n",m);
return 0;
}

输出的是8b;
xspace_time 2012-09-26
  • 打赏
  • 举报
回复
大家都是对的 说一下 楼上的不顶用

实际上printf("%x",m);将一个signed char转换为int 要保证不进行符号扩展 除非修改系统符号扩展规则
这个看起来 不大可能实现 而且关键问题是这个问题的演化原版程序里是我搞错了

所以大家 平均给分 因为打击的方法都是可以用的
manxiSafe 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
C/C++ code


printf("%x",(unsigned char)m);
[/Quote]
开始一看觉得是正解,结果验证一下才发现打印的还是4字节,printf("%c\n",(char)i),这样打印的也是无法确定的,
继续关注,楼主要是知道的话就讲下为什么与方法吧。

关注 。。。。。。。。。。。。。。。。。。。
swp543210 2012-09-26
  • 打赏
  • 举报
回复
m=~((char)(~i));
xspace_time 2012-09-26
  • 打赏
  • 举报
回复
只能在省略号处做修改 要求输出8b .....................

不要使用m&0xff
hello_world000 2012-09-26
  • 打赏
  • 举报
回复

printf("%x",(unsigned char)m);
xspace_time 2012-09-26
  • 打赏
  • 举报
回复
你们把最问题的地方都改了 这个问题自然不会成为问题
xspace_time 2012-09-26
  • 打赏
  • 举报
回复

#include<stdio.h>
int main()
{
int i=0x8b;
char m;
…………
printf("%x",m);
return 0;
}

只能在省略号出做修改 要求输出8b
Yueyugezhu 2012-09-26
  • 打赏
  • 举报
回复

#include<stdio.h>
int main()
{
int i=0xffffff8b;
unsigned char m=i&0xff;
printf("%x",m);
return 0;
}
hnzmdzcm 2012-09-26
  • 打赏
  • 举报
回复
<<左移24位
xspace_time 2012-09-26
  • 打赏
  • 举报
回复
真的不错 如果char类型不变 该怎么改
Code_Talk 2012-09-26
  • 打赏
  • 举报
回复

#include<stdio.h>
int main()
{
int i=0xffffff8b;
int m=i&0xff;
printf("%x",m);
return 0;
}

69,372

社区成员

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

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