标题: 单片机c语言实参和形参类型一致,但数值大小不同,为什么呢 [打印本页]

作者: MHNMHN    时间: 2017-11-17 22:15
标题: 单片机c语言实参和形参类型一致,但数值大小不同,为什么呢
我给长整型变量ShuZhi赋16010070,然后代入长整型形参a,但在debug中得到a的值为19286。这是为什么呀我已经在debug检查过a确实是赋上了16010070,但在传递到a后,a的值为19286.....

单片机c语言源程序:
  1. void main()
  2. {
  3. unsigned long int ShuZi;
  4.   while(1)
  5.         {
  6.                 ShuZi=16010070;
  7.                 Input(ShuZi);
  8.                 Display();
  9.         }
  10. }
  11. /****子函数***/
  12. void Input(unsigned long int a)
  13. {...}
复制代码




360截图20171117221437915.jpg (4.71 KB, 下载次数: 86)

360截图20171117221437915.jpg

作者: 不倒翁.WZT    时间: 2017-11-18 04:48
标题: RE: 单片机c语言实参和形参类型一致,但数值大小不同,为什么呢
问题可能出在这里:void Input(unsigned long int a), long是32位数据类型。int是16位数据类型,单片机究竟执行哪个数据?
作者: zf940423    时间: 2017-11-18 09:23
#在这里快速回复#:void Input(unsigned long int a), long是32位数据类型。int是16位数据类型,单片机究竟执行哪个数据要看你的接口,int模块不知道?
作者: hange_v    时间: 2017-11-18 10:08
不能写unsigned long int,应该写unsigned long,没有unsigned long int 这种类型
作者: MHNMHN    时间: 2017-11-18 11:58
本帖最后由 MHNMHN 于 2017-11-18 15:07 编辑
不倒翁.WZT 发表于 2017-11-18 04:48
问题可能出在这里:void Input(unsigned long int a), long是32位数据类型。int是16位数据类型,单片机究 ...

问题已经解决了,是我声明函数部分没有改好所导致的................................
作者: MHNMHN    时间: 2017-11-18 12:02
问题已经解决了,谢谢大家。主要是定义出了问题,我不应该写unsigned long int ,虽然能通过编译,但实现不了想要的效果




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1