永发信息网

求问个c语言问题 我这个程序为什么出现警告错误

答案:3  悬赏:80  手机版
解决时间 2021-11-14 20:49
  • 提问者网友:饥饿走向夜
  • 2021-11-14 12:21
求问个c语言问题 我这个程序为什么出现警告错误
最佳答案
  • 五星知识达人网友:老鼠爱大米
  • 2021-11-14 13:50
1、函数f先使用后定义了。
2、函数f需要返回一个int类型。


修改一下顺序就可以了。
#include 
#include
struct my
{
    float a;
}arg;
void f(struct my parm)
{
    printf("%6.2f
",parm.a);
}
int main()
{
    arg.a=888.88f;
    f(arg);
    return 0;
}追问那把调用函数放后面该怎么写啊追答那就在前面加函数声明,总之函数在调用之前要知道函数的定义。
#include 
#include
struct my
{
    float a;
}arg;
void f(struct my parm);
int main()
{
    arg.a=888.88f;
    f(arg);
    return 0;
}
void f(struct my parm)
{
    printf("%6.2f
",parm.a);
}追问为什么把这个声明放在主函数内不行呢而且还出现运行后没有输出的情况呢追答可以呀,函数声明放在哪里都可以呀,只要在调用之前就行。

函数调用前如果没有声明的话,不会将真正的参数传进去的。调用前必须声明才能打印出来。追问可是你看这样就不行啊
追答。。。你那是调用函数,我不是说在调用函数之前声明吗?你在调用前面加个void有啥用啊,那只是将返回值强制指定为void,改成下面的。
#include 
#include
struct my
{
    float a;
}arg;
int main()
{
    arg.a=888.88f;
    void f(struct my parm);
    f(arg);
    return 0;
}
void f(struct my parm)
{
    printf("%6.2f
",parm.a);
}追问哦哦 懂啦 可还有个问题 输出里的6.2f 是不是指着最少六位?追答对,最少6位,不够6位的话在前面用空格补齐。追问那2呢 什么意思既然最少六位 888.88是五位啊 应该补零啊追答888 三位
. 一位
88 二位

正好是6位,所以不需要补齐的。

6.2 第一个6是整个数字串的长度,最长是6。第二个2是小数点后面的位数,保留两位小数。追问哦哦这样呀那个忙吗 我先给你好评然后再帮我看个代码可以吗 有个代码我问了好久也没问明白追答你问吧。追问就是 这段代码哪里错了
追答这段代码没有错呀追问可是你看下面出现的错误追答你这是什么编译器呀,我用的VS2005都是好好的。追问我用的qt.. 那我回去再试试吧
全部回答
  • 1楼网友:青灯有味
  • 2021-11-14 15:51
使用f之前没有声明
还有f前面最好加个void
  • 2楼网友:忘川信使
  • 2021-11-14 15:25
刚开始注意你的编程习惯,把格式一定规范好
哪里空格,哪里给Tab,严格要求自己
方法体前面 你要申明类型!
不懂留企鹅,追我追问请问我这个格式哪里有问题吗还有你说的是在主函数引用的时候声明吗追答f()是你的方法体,没有返回类型 前面加个void
规范自己就好

要不然后面,循环,内外部类嵌套,代码只有你自己认识,别人看起来太别扭,后期维护要花功夫了!追问可是这样还是有警告啊

追答警告是正常的,没事!
练习多了,语法错误少了

更多的是逻辑错误。还要你自己一步步的调试啊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯