keil中 int uint16_t 数据类型的一点问题

2019-10-16 06:50发布

    之前在C2000 用的modbus程序 移植到 cortex M0M3核的芯片上后,遇到向寄存器写入的时候程序偶尔会跑飞。
    直到有一天,忽然注意到keil里面默认的 unsigned int 、 int 类型是32位 而 uint16_t 是16位。CCS里面 int 、unsigned int 和 uint16_t 都是16位。

    而我一直认为int  是16位的呀

    在程序中有一步操作
    int *p;
    uint16_t reg ;
    uint16_t temp;

    p=(int *)®
    *p=temp;  //-----程序在这里跑飞啦----

  后来数据类型全部改为一致,问题解决。
  记得以前C语言教科书有提到:不同的系统数据类型的长度也许是不一样的!








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。