职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 738|回复: 3

C语言的问题

[复制链接]
诗诺 发表于 2009-8-14 09:39 | 显示全部楼层 |阅读模式
#include<stdio.h>
main()
{
char x=0xFFFF;
printf(\"%d\\n\",x--);
}

结果是“-1”
如何得来的?????
成哥 发表于 2009-8-14 09:39 | 显示全部楼层

C语言的问题

0xFFFF
是16进制的
青蛙 发表于 2009-8-14 09:39 | 显示全部楼层

C语言的问题

0xFFFF是十六进制
转换为二进制为1111 1111 1111 1111
第一位是符号位
由于第一位是1
故为负数
根据负数补码取反加一的编码原则
故原码为0000 0000 0000 0000+1=0000 0000 0000 0001
所以输出-1
小树 发表于 2009-8-14 09:39 | 显示全部楼层

C语言的问题

char 一个字节 二进制表示为 1111 1111
转为整数就是为 -1
计算机中的数是以补码存在的
1111 1111 就为 -1 的补码
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-6 16:47 , Processed in 0.145566 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表