打印

帮忙看一下,两种写法结果不同的原因?

[复制链接]
1277|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doob|  楼主 | 2009-10-19 23:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
hou| | 2009-10-20 00:37 | 只看该作者
Num_X在哪里定义的?

使用特权

评论回复
板凳
doob|  楼主 | 2009-10-20 07:17 | 只看该作者
奥,忘记贴了!
UINT16   OUT_XNum;

void PrintHex(UINT8 x)  
打印是八位的,写法不规范,但不知道
OUT_XNum 的值为什么结果会不同?

使用特权

评论回复
地板
ejack| | 2009-10-20 07:38 | 只看该作者
OUT_XNum是UINT16型。写法一中的第2句导致隐含的类型转换。
~OUT_TempX的中间结果是0xFF01,而非你所预期的0x01

使用特权

评论回复
5
doob|  楼主 | 2009-10-20 07:44 | 只看该作者
本帖最后由 doob 于 2009-10-20 07:50 编辑

奥,这样啊,谢谢;
如何写才能实现uint8取反,再赋给uint16呢?
因为我在做累加,最后结果需要16bit;

使用特权

评论回复
6
hyg1984| | 2009-10-20 10:45 | 只看该作者
我看得有点晕乎乎的。。。。。。
累加嘛,uint16 = uint16 + 累加量;这不行吗?
取反嘛,uint8 = ~uint8;    赋给uint16嘛。。uint16 = uint16 | uint8;
好像写着写着,有点无意义,你最好举个例子来问问

使用特权

评论回复
7
doob|  楼主 | 2009-10-20 16:47 | 只看该作者
呵呵,我为了省寄存器空间!

UINT8   OUT_TempX;
UINT16   OUT_XNum;

OUT_TempX=0xfe;
OUT_XNum=~OUT_TempX+1;   //注意:此句导致隐含类型转换;

我的预期是想:OUT_XNum值为:0x0002;
但结果是 ejack 所说的0xff02;
看来我的基础知识太不扎实了!自责!掐大腿一次!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

165

主题

1114

帖子

3

粉丝