鱼C论坛

 找回密码
 立即注册
查看: 4099|回复: 10

一个关于形参的问题

[复制链接]
发表于 2012-8-9 21:37:44 | 显示全部楼层 |阅读模式
5鱼币
,例如在函数参数里面如何使用32位的变量,或者自定义变量大小呢?
编译环境 keil_c51v4.
我想给c赋值为32位变量参数,小弟是初学者希望大家得到大家的帮助谢谢各位哦
void wuser(uchar c)
{       
        uchar qian,bai,shi,ge,a;
        wcom(0x80+5);
        qian=c/65536;
        wdata(table_num[qian]);
        bai=c%65536/4096;
        wdata(table_num[bai]);
        shi=c%65536%4096/16;
        wdata(table_num[shi]);
        ge=c%65536%4096%16;
        wdata(table_num[ge]);
for(a=0;a<5;a++)
        {wdata(table_hex[a]);delay();}

               
}

最佳答案

查看完整内容

int, long, float, double,char 一般用的就是这些吧,好像没有64位的吧,那代表的范围也太大了,得多少个亿…… 16位的都已经到六万多了。 你是说想要多大定多大吗?不行的吧,应该就这几种供选择的。我觉得这些就够用了。 我也是刚学哈~~~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-9 21:37:45 | 显示全部楼层

int, long, float, double,char 一般用的就是这些吧,好像没有64位的吧,那代表的范围也太大了,得多少个亿…… 16位的都已经到六万多了。     你是说想要多大定多大吗?不行的吧,应该就这几种供选择的。我觉得这些就够用了。      我也是刚学哈~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-10 12:26:06 | 显示全部楼层
你在弄单片机? 我也刚初学单片机的~~

你 可以再主函数前面加一个 “typedef unsigned long    ulong;”     再定义ulong  c;就是32位的了。
(ulong是个名字,可以随便起)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-10 21:15:11 | 显示全部楼层
Believe 发表于 2012-8-10 12:26
你在弄单片机? 我也刚初学单片机的~~

你 可以再主函数前面加一个 “typedef unsigned long    ulong;” ...

谢谢你的回答啊,,可是如果我用其他的位呢??64?我想请教一下如何自定义函数形参大小呢谢谢你的回答了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-11 08:46:35 | 显示全部楼层
Believe 发表于 2012-8-10 21:55
int, long, float, double,char 一般用的就是这些吧,好像没有64位的吧,那代表的范围也太大了,得多少个 ...

恩,你说的也是,可是我用long去定义的时候,我给液晶负值0xf6f6(自定义的数字,)然后液晶数出来的是0x00f6,刚好把高八位给没了,,,,,所以我一直想找个办法能让液晶显示4位,我不想用两个变量拼成一个,那样做太蠢了,,大哥哥貌似您刚刚教我的办法不是很好使啊,我试了一下子
然后上面的源码有点问题,,就是不应该除以65536的,一开始是除以4096取模,然后除以4096取于,然后除以4096取余除以16取模,最后除以16取余
下面是修改后的(但是那个变量始终不行啊)
void wuser(long c)
{       
        uchar qian,bai,shi,ge,a;
        wcom(0x80+5);
        qian=c/4096;
        wdata(table_num[qian]);
        bai=c%4096/256;
        wdata(table_num[bai]);
        shi=c%4096%256/16;
        wdata(table_num[shi]);
        ge=c%16;
        wdata(table_num[ge]);
for(a=0;a<5;a++)
        {wdata(table_hex[a]);delay();}

               
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-11 08:47:58 | 显示全部楼层
Believe 发表于 2012-8-10 21:55
int, long, float, double,char 一般用的就是这些吧,好像没有64位的吧,那代表的范围也太大了,得多少个 ...

8051 8位的会不会和这个有关啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-11 10:25:52 | 显示全部楼层
Believe 发表于 2012-8-9 21:37
int, long, float, double,char 一般用的就是这些吧,好像没有64位的吧,那代表的范围也太大了,得多少个 ...

谢谢你啊,,我找到原因了,,是这样的,我在头文件里面申请的变量是char的,而我在函数形参里面的参数是long形的难怪不行呢,谢谢你的解答,我想我把16进制和2进制混淆了..这是一个低级错误希望下次不再发生,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-11 18:05:19 | 显示全部楼层
洗脚水煮饺子 发表于 2012-8-11 10:25
谢谢你啊,,我找到原因了,,是这样的,我在头文件里面申请的变量是char的,而我在函数形参里面的参数是long形 ...

以后单片机的地方多多交流哦~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-12 10:38:28 | 显示全部楼层
Believe 发表于 2012-8-11 18:05
以后单片机的地方多多交流哦~~~

嗯嗯嗯,谢谢你的帮助哈哈.我是mcs8051的机子,你呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-12 20:42:56 | 显示全部楼层
洗脚水煮饺子 发表于 2012-8-12 10:38
嗯嗯嗯,谢谢你的帮助哈哈.我是mcs8051的机子,你呢?

STC89C52RC 的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-8 16:02:38 | 显示全部楼层

是12c5a60s2芯片的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 15:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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