keil宏定义数值大小问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keil宏定义数值大小问题相关的知识,希望对你有一定的参考价值。

#include <REG52.H>
#define Z_jiasu(Z) (Z*10/2) //(Z*10)只要运算的数据超过32768,A的数就不对,可能是被列为有符号运算了。请问大家是不是也是这 情况 。

unsigned int A;
void main()


A=Z_jiasu(3276);

已经解决。谢谢

不同编译器的缺省数据类型,要心中有数。该强制类型的地方要加强制类型。
51编译器的默认数据类型只能到16位,没法更高了,所以编写51的C程序与x86会有很大的不同,穷人的孩子更要精打细算。
参考技术A 贴出完整的出错提示。对问题要提供客观描述,不要用这种主观描述。追问

没有出错,只是(Z*10)的结果大于32768的话调试里面A的值就不对,小的话还是对的
#include
#define Z_jiasu (4000*10/2)

unsigned int A;
void main()


A=Z_jiasu;
while(1);

就这程序跑的话你认为A的数会是多少,

以上是关于keil宏定义数值大小问题的主要内容,如果未能解决你的问题,请参考以下文章

keil5里面需要添加宏定义么

keil4怎样进行宏定义

keil4预处理器宏过于嵌套怎么解决?

keilmdk怎么查看宏定义值

怎么让keil MDK 不把把宏定义给优化掉了

STM32F10xxx_Keil中添加的预定义宏