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宏定义数值大小问题的主要内容,如果未能解决你的问题,请参考以下文章