找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1018|回复: 7
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:349276 发表于 2024-8-15 14:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数形参是通过寄存器传递的,这里有个问题,如 void deal(num){...},这个形参num我并没有指明它是bit int char等类型,编译时keil编译器它并不会报错,并且调用时,实参我用bit型 char型 int型,都可以。有谁能深入解释下这究竟咋回事不?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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  ...

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

使用道具 举报

5#
ID:349276 发表于 2024-8-15 23:54 | 只看该作者
coody_sz 发表于 2024-8-15 18:29
KEIL有默认的,不指定就默认为int型。

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

使用道具 举报

6#
ID:1128898 发表于 2024-8-16 03:25 | 只看该作者
形参是默认
回复

使用道具 举报

7#
ID:879348 发表于 2024-8-16 08:04 | 只看该作者
不建议写这种程序,在不同编译器会有不同表现
回复

使用道具 举报

8#
ID:910662 发表于 2024-8-16 11:10 | 只看该作者
还是确定一点的好,否则,不单自己不放心,读起来也不舒服。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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