找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 484|回复: 7
收起左侧

c51单片机函数入参(形参)问题

[复制链接]
ID:349276 发表于 2024-8-15 14:06 | 显示全部楼层 |阅读模式
函数形参是通过寄存器传递的,这里有个问题,如 void deal(num){...},这个形参num我并没有指明它是bit int char等类型,编译时keil编译器它并不会报错,并且调用时,实参我用bit型 char型 int型,都可以。有谁能深入解释下这究竟咋回事不?
回复

使用道具 举报

ID:624769 发表于 2024-8-15 17:38 | 显示全部楼层
一个合格的程序,需要有很多“默认”的定义。
以keil4 PK51 为例,你没有定义的前提下,默认是通过 R6,R7 寄存器传参,你可以理解为short 类型,虽然不太确切。 即便你给一个 char 或者 bit 它也是强制转成 short 格式(实际上也就是放入 R6,R7),然后传到 函数中(实际上也就是让函数使用 R6,R7 的值参与函数内的计算)。
回复

使用道具 举报

ID:1034262 发表于 2024-8-15 18:29 | 显示全部楼层
KEIL有默认的,不指定就默认为int型。
回复

使用道具 举报

ID:349276 发表于 2024-8-15 23:53 | 显示全部楼层
188610329 发表于 2024-8-15 17:38
一个合格的程序,需要有很多“默认”的定义。
以keil4 PK51 为例,你没有定义的前提下,默认是通过 R6,R7  ...

谢谢,这么说就清楚了。
回复

使用道具 举报

ID:349276 发表于 2024-8-15 23:54 | 显示全部楼层
coody_sz 发表于 2024-8-15 18:29
KEIL有默认的,不指定就默认为int型。

感谢!这些默认的知识哪里能看到呢,感觉相关的书籍都没有介绍。
回复

使用道具 举报

ID:1128898 发表于 2024-8-16 03:25 | 显示全部楼层
形参是默认
回复

使用道具 举报

ID:879348 发表于 2024-8-16 08:04 | 显示全部楼层
不建议写这种程序,在不同编译器会有不同表现
回复

使用道具 举报

ID:910662 发表于 2024-8-16 11:10 | 显示全部楼层
还是确定一点的好,否则,不单自己不放心,读起来也不舒服。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表