打印

大家写keil51代码的无符号常数加上后缀U么?

[复制链接]
3410|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
渤海三叠浪|  楼主 | 2012-10-9 18:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前没有加后缀U的习惯。打算改变。请问大家有这个习惯么?
举例 INT16U  i = 0;
i = 0xf000 >> 4;

那么0xf000编译器会认为是什么呢?通过试验发现认为是unsigned int 类型。

熟视无睹,以前一直没有考虑过这个问题。只是注意到逻辑移、算数移。

再举个例子

INT16U i = 0;
i = 0xf000 | (INT8U)0X32;

那么oxF000会先被强制成什么呢?是无符号还是有符号呢?

---------------------------------------------------------

说了一堆没用的,再次问大家,大家对于无符号常数都加上后缀U么?

相关帖子

沙发
airwill| | 2012-10-9 21:00 | 只看该作者
由于变量都强制了数据类型, 很少使用 U, 不过 UL 倒是用得蛮多.

使用特权

评论回复
板凳
highgear| | 2012-10-9 21:20 | 只看该作者
一般如果数据大于 32768 (0x8000), 那么最好加上尾缀, 否则编译器在算术运算中会被当作有符号数处理。

使用特权

评论回复
地板
ayb_ice| | 2012-10-10 10:19 | 只看该作者
赋值语句没有关系的

使用特权

评论回复
5
渤海三叠浪|  楼主 | 2012-10-10 19:58 | 只看该作者
KEIL51上加不加U倒不会出错。但是换个编译器就不清楚了.

另外加U还是感觉有点别扭。以后可能会加的

使用特权

评论回复
6
李富贵| | 2012-10-10 21:34 | 只看该作者
你这是ucosii代码吧。
ucos2.52还没有这个u,到了2.86所有相关常数都有这个u,估计是开始用过的编译器都没问题,后来移植的处理器型号越来越多,在某个编译器上面出了问题才加这个u的。

使用特权

评论回复
7
coody| | 2012-10-11 09:56 | 只看该作者
L或UL

使用特权

评论回复
8
渤海三叠浪|  楼主 | 2012-10-11 19:54 | 只看该作者
6# 李富贵
嗯  是我随便举例的代码

我是先跟我师父学的的INT8U  后来才发现UCOS用的INT8U。

你说的应该是对的。我也发现前期的版本规范性比较差。后期有不少是规范性的。

不过规范性的东西读起来不一定好懂。

使用特权

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

本版积分规则

62

主题

637

帖子

1

粉丝