求大佬讲解
本帖最后由 宇与鱼 于 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
把问题说出来,不要让别人去猜你遇到了什么问题
5/2应该等于2.500000
本帖最后由 isdkz 于 2022-5-12 23:12 编辑
宇与鱼 发表于 2022-5-12 23:04
5/2应该等于2.500000
我这里执行没有问题
isdkz 发表于 2022-5-12 23:09
我这里执行没有问题
难道是编译器的问题吗?
宇与鱼 发表于 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);
}
我更离谱,1.0000 了....
Twilight6 发表于 2022-5-12 23:13
我更离谱,1.0000 了....
哈哈哈哈哈哈,看来确实很离谱 isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,
我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++...
你这个我执行也是 2.50000
Twilight6 发表于 2022-5-12 23:14
你这个我执行也是 2.50000
哦哦,那你们的不先声明怎么能执行的?我的执行不了 isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,
我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++...
你这个我也可以执行成功了
isdkz 发表于 2022-5-12 23:15
哦哦,那你们的不先声明怎么能执行的?我的执行不了
不懂哈哈,我用的是 Vs2022,没学 C,Vs 下载来吃灰的
也就逛论坛用用回答一些和 java 很像的问题 {:10_278:}
Twilight6 发表于 2022-5-12 23:17
不懂哈哈,我用的是 Vs2022,没学 C,Vs 下载来吃灰的
也就逛论坛用用回答一些和 java 很像的问题 ...
好吧 宇与鱼 发表于 2022-5-12 23:17
你这个我也可以执行成功了
ok,那应该是因为你没有声明的问题,如果函数调用在定义之前,记得先声明哦,
在主函数里面声明也行,只要是在调用之前声明就好,如果 chu 函数定义在主函数之前(准确地说是调用之前)
就不需要另外声明 isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,
我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++...
c语言不是先执行主函数吗,main放在哪里应该都一样
宇与鱼 发表于 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:38 编辑
宇与鱼 发表于 2022-5-12 23:20
c语言不是先执行主函数吗,main放在哪里应该都一样
就是因为它先执行主函数,如果在主函数之后定义这个函数的话,主函数执行的时候不知道有这么一个函数,
所以要先提前声明一下,告诉它有这么一个函数,如果是在主函数之前就定义了,那它早就知道有这么一个函数,就不需要另外声明了
我的理解是这样的,C 我也不是很懂,你可以在网上找找看:
https://blog.csdn.net/qq_44857137/article/details/101791179
https://zhuanlan.zhihu.com/p/375645259
函数chu 要放在main前面。 d=(float)a/(float)b;/////试试都强制转换 你得先声明chu这个函数,或者你也可以把chu这个函数写main前面,这个是作用域的问题
页:
[1]