社区
C语言
帖子详情
求解unsigned char 与char
pxy莫棋
2012-09-02 05:57:48
求解,如下
char p=122;
char *ts=&p;
printf("%8x",*ts);
输出为:7a
而如果改为
char p=254;
char *ts=&p;
printf("%8x",*ts);
输出为fffffffe
?
...全文
178
9
打赏
收藏
求解unsigned char 与char
求解,如下 char p=122; char *ts=&p; printf("%8x",*ts); 输出为:7a 而如果改为 char p=254; char *ts=&p; printf("%8x",*ts); 输出为fffffffe ?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lovethinkpad
2012-09-04
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
lz compiler 默认的char 是 signed 的
[/Quote]
我觉得这个是欠妥的,char默认类型是由编译器决定的!
AnYidan
2012-09-03
打赏
举报
回复
lz compiler 默认的char 是 signed 的
赵4老师
2012-09-03
打赏
举报
回复
char p=254;
char *ts=&p;
printf("%8x",
(unsigned char)
*ts);
shen_wei
2012-09-03
打赏
举报
回复
char 的范围,-127 - 127
unsigned char 0 -155 注意数据的取值范围@@
northcan
2012-09-03
打赏
举报
回复
char p=254;
char *ts=&p;
printf("%8x",*ts);
有符号char类型,正数最大就是127,最高位是符号位
254存储到p里面,相当于-2(0xfe),按补码存的
负数的符号位是1,扩展的时候是前面全都是1
lovethinkpad
2012-09-03
打赏
举报
回复
如果楼主想要输出地址的话,应该用“%s”;
pxy莫棋
2012-09-03
打赏
举报
回复
嗯,谢谢大家了!懂了~
SKATE11
2012-09-02
打赏
举报
回复
楼主理解补码吗 理解的话就懂了
图灵狗
2012-09-02
打赏
举报
回复
printf的%x会解释为int类型,相当于会自动把p从char类型扩展到int类型:
1、122是正数所以其符号扩展为0,相当于0x0000007a;
2、254是负数所以其符号扩展为1,相当于0xfffffffe。
typedef struct {
unsigned
char
c : 4 ; }ss;
unsigned
char
c : 4 ; } //对其意思不理解, s1.c= (s0.c); */ //不大理解,请求帮助。谢谢 //检举 | 2011-9-30 09:01 提问者: 1144377120 | 浏览次数:115次 //请教大师 #include using namespace std; ...
萌新
求解
unsigned
char
Nixietable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void Delay(
unsigned
char
xms) {
unsigned
char
i, j; while(xms–) { i = 2; j = 199; do { while (–j); } while (–i); } } ...
关于运算符问题的两道面试题
面试题1:下面程序的结果是多少: #include using namespace std;...
unsigned
char
a = 0xA5;
unsigned
char
b = ~a>>4+1; cout // printf("b = % d\n ", b); return 0; } A: 245 B: 246 C: 250 D: 2
练气六层 —— 重要知识点总结
} 5.
char
和
unsigned
char
的比较 #include int main() { //1)
char
的值范围是-128-127,
unsigned
char
的值范围是0-255
char
a = -10;
unsigned
char
b = -10; printf("%d %d\n", a, b);//-10 246 //由此可知,...
ATmega 128的编程的一些基本特性
CodeVisionAVR C1、 数据类型转换。
unsigned
char
a = 30;
unsigned
char
b = 128;
unsigned
int c;c = a*b; //出错,因为8位相乘的结果也是8位的,得转换为16位c = (
unsigned
int) a*b;2、 常量。如果把
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章