#include <reg52.h>
unsigned int add(unsigned int variable1,unsigned int variable2)
{
unsigned long x = (unsigned long)variable1+variable2; // C 51 当计算的数值大小不确定的时候 一定要统一类型
if(x>0xFFFF)
return 0;
else
return (variable1+variable2);
}
void main(void)
{
unsigned int var = add(65535,10);
while(1);
}
// 结果就是 0x00
(unsigned long)variable1 // 如果去掉 unsigned long 存储类型就变了。
最近发现自己老是犯低级错误,基础不牢固啊!
#include <reg52.h>
unsigned int add(unsigned int variable1,unsigned int variable2) reentrant
{
unsigned long x = (unsigned long)variable1+variable2; // C 51 当计算的数值大小不确定的时候 一定要统一类型
if(x>0xFFFF)
return 0;
else
return (variable1+variable2);
}
void main(void)
{
unsigned int var = add(65535,0x0155);
while(1);
}
// 结果就是 0x00
//(unsigned long)variable1 // 如果去掉 unsigned long 存储类型就变了。


本文深入探讨了C51编程中大数运算的注意事项,通过实例展示了如何正确处理超出范围的数值问题,并强调了基础编程原则的重要性,帮助开发者避免常见低级错误。
2648

被折叠的 条评论
为什么被折叠?



