关于嵌入式int型数据的讨论学习

嵌入式如果用int关键字才是真正不懂嵌入式,
如果想做到软件可以移植,应该将类型给定义清晰,

    typedef unsigned char INT8U; 
    typedef signed char INT8S;
编码时使用INT8U去定义数据类型。

明知道int在不同的机器上可能有不同的字长,还使用int,自找苦吃。

 

unsigned int compzero = 0xFFFF;
意图是想让compzero 全是二进制1,但是 0xFFFF是代表程序员认为int 是2个字节的,在两个字节的机器上这样可以要是4字节呢?系统就自动变成相当于unsigned int compzero = 0x0000FFFF;的形式这下和你的意图不一样了吧?

那我想在2或4字节都全1怎么办?

    unsigned int compzero = ~0;
~0是在说我不管你是两字节还是四字节我只要全1,系统你自己去自适应去,所以写成~0,这样在两字节机器上系统会自动变成0xFFFF,四字节机器上变成0xFFFFFFFF保证了你的意图。

posted @ 2013-03-18 20:09  丁洋  阅读(337)  评论(0编辑  收藏  举报