宇与鱼 发表于 2022-5-12 23:00:20

求大佬讲解

本帖最后由 宇与鱼 于 2022-5-12 23:05 编辑

找了好久不知道原因所在 5/2应该等于2.500000
#include<stdio.h>
main()
{
int a,b,c;
float d;
char op;
scanf("%c",&op);
scanf("%d%d",&a,&b);
switch(op)
{
case '/':d=chu(a,b);printf("%d%c%d=%f",a,op,b,d);break;
default :printf("输入错误");break;
}
}

float chu(int a,int b)
{
float d;
d=a/(float)b;
return (d);
}

isdkz 发表于 2022-5-12 23:03:50

把问题说出来,不要让别人去猜你遇到了什么问题

宇与鱼 发表于 2022-5-12 23:04:53

isdkz 发表于 2022-5-12 23:03
把问题说出来,不要让别人去猜你遇到了什么问题

5/2应该等于2.500000

isdkz 发表于 2022-5-12 23:09:11

本帖最后由 isdkz 于 2022-5-12 23:12 编辑

宇与鱼 发表于 2022-5-12 23:04
5/2应该等于2.500000

我这里执行没有问题


宇与鱼 发表于 2022-5-12 23:11:18

isdkz 发表于 2022-5-12 23:09
我这里执行没有问题

难道是编译器的问题吗?

isdkz 发表于 2022-5-12 23:12:31

宇与鱼 发表于 2022-5-12 23:11
难道是编译器的问题吗?

不知道,不过代码我改了一下才执行的,

我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++ 可以?

#include<stdio.h>
float chu(int a, int b);                           // 加了这个
main()
{
int a,b,c;
float d;
char op;
scanf("%c",&op);
scanf("%d%d",&a,&b);
switch(op)
{
case '/':d=chu(a,b);printf("%d%c%d=%f",a,op,b,d);break;
default :printf("输入错误");break;
}
}

float chu(int a,int b)
{
float d;
d=a/(float)b;
return (d);
}

Twilight6 发表于 2022-5-12 23:13:14



我更离谱,1.0000 了....



isdkz 发表于 2022-5-12 23:14:01

Twilight6 发表于 2022-5-12 23:13
我更离谱,1.0000 了....

哈哈哈哈哈哈,看来确实很离谱

Twilight6 发表于 2022-5-12 23:14:48

isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,

我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++...



你这个我执行也是 2.50000




isdkz 发表于 2022-5-12 23:15:38

Twilight6 发表于 2022-5-12 23:14
你这个我执行也是 2.50000

哦哦,那你们的不先声明怎么能执行的?我的执行不了

宇与鱼 发表于 2022-5-12 23:17:10

isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,

我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++...

你这个我也可以执行成功了

Twilight6 发表于 2022-5-12 23:17:24

isdkz 发表于 2022-5-12 23:15
哦哦,那你们的不先声明怎么能执行的?我的执行不了



不懂哈哈,我用的是 Vs2022,没学 C,Vs 下载来吃灰的

也就逛论坛用用回答一些和 java 很像的问题 {:10_278:}

isdkz 发表于 2022-5-12 23:18:12

Twilight6 发表于 2022-5-12 23:17
不懂哈哈,我用的是 Vs2022,没学 C,Vs 下载来吃灰的

也就逛论坛用用回答一些和 java 很像的问题 ...

好吧

isdkz 发表于 2022-5-12 23:20:23

宇与鱼 发表于 2022-5-12 23:17
你这个我也可以执行成功了

ok,那应该是因为你没有声明的问题,如果函数调用在定义之前,记得先声明哦,

在主函数里面声明也行,只要是在调用之前声明就好,如果 chu 函数定义在主函数之前(准确地说是调用之前)

就不需要另外声明

宇与鱼 发表于 2022-5-12 23:20:28

isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,

我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++...

c语言不是先执行主函数吗,main放在哪里应该都一样

isdkz 发表于 2022-5-12 23:32:47

宇与鱼 发表于 2022-5-12 23:20
c语言不是先执行主函数吗,main放在哪里应该都一样

C我也不是很懂,不过C里面的对象不都是要先声明后使用的吗?

代码执行的时候应该还是从上往下读的吧,只是把主函数作为入口执行而已,

应该大概就是先提前给这个对象预留一个内存地址,也好在后面的执行过程中知道有这么一个东西,

如果函数定义在主函数前面的话,执行主函数的时候就已经知道有这么一个函数了,就不需要另外声明,

函数定义在主函数后面,你还要提前声明一下,告诉它有这么一个函数,

你可以看一下这些参考文章:

https://blog.csdn.net/qq_44857137/article/details/101791179

https://zhuanlan.zhihu.com/p/375645259

isdkz 发表于 2022-5-12 23:36:42

本帖最后由 isdkz 于 2022-5-12 23:38 编辑

宇与鱼 发表于 2022-5-12 23:20
c语言不是先执行主函数吗,main放在哪里应该都一样

就是因为它先执行主函数,如果在主函数之后定义这个函数的话,主函数执行的时候不知道有这么一个函数,

所以要先提前声明一下,告诉它有这么一个函数,如果是在主函数之前就定义了,那它早就知道有这么一个函数,就不需要另外声明了

我的理解是这样的,C 我也不是很懂,你可以在网上找找看:

https://blog.csdn.net/qq_44857137/article/details/101791179

https://zhuanlan.zhihu.com/p/375645259

ba21 发表于 2022-5-12 23:39:01

函数chu 要放在main前面。

jhq999 发表于 2022-5-13 08:59:47

d=(float)a/(float)b;/////试试都强制转换

FengYue20 发表于 2022-5-13 16:31:09

你得先声明chu这个函数,或者你也可以把chu这个函数写main前面,这个是作用域的问题
页: [1]
查看完整版本: 求大佬讲解