关于嵌入式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保证了你的意图。