错误消息“格式'%ld'期望类型为'long int'的参数,但是参数2具有类型'int'”

千年公爵

我正在编写一个简单的程序来查找第一个'n'整数的阶乘。但是编译时遇到了这个错误。即使认为fact()函数的返回类型为long int,该错误仍然会持续存在。

#include <stdio.h>
#include <stdlib.h>

int main(){
    int i;
    for(i=0;i<30;i++)
        printf("%ld\n", fact(i));
    return 0;
}

long int fact(int n){
    if(n==0)
        return 1;
    else 
        return (long)(n*fact(n-1));
}

错误:

fourth.c:7:3: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘int’ [-Wformat=]
printf("%ld\n", fact(i));
^
fourth.c: At top level:
fourth.c:11:10: error: conflicting types for ‘fact’
long int fact(int n){
         ^
fourth.c:7:19: note: previous implicit declaration of ‘fact’ was here
printf("%ld\n", fact(i));
               ^  
吊床

您忘记了之前包含函数原型main包括一个原型

long int fact(int n);

或将函数定义移到之前main

#include <stdio.h>
#include <stdlib.h>

long int fact(int n){
    if(n==0)
        return 1;
    else
        return (n*fact(n-1));
}

int main(){
    int i;
    for(i=0;i<30;i++)
        printf("%ld\n", fact(i));
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

警告:格式'%d'期望的参数类型为'int',但是参数2的类型类型为'long int'[-Wformat =]

格式'%d'期望类型为'int'的参数

警告格式指定类型为int,但参数的类型为long

警告:格式'%x'期望类型为'unsigned int'的参数

c ++错误代码格式'%c'期望类型为'int'的参数

什么是警告警告,以及如何解决此警告:格式'%p'期望类型为'void *'的参数,但是在输出时参数2的类型为'int *'[-Wformat =]

警告:格式为'c'的参数类型为'int',但是参数2的类型为'char'

错误:一元'*'的类型参数无效(具有'long int')

错误:格式为'%s'的参数类型为'char *',但参数2的类型为'int'[-Wformat =]

解释`_Generic`错误消息:错误:一元'`*`'的无效类型参数(具有'int`')

从int到long int的类型转换

函数具有类型为“int”的参数,但传递了类型为“int*”的参数

格式 '%d' 需要类型为 'int' 的参数,但参数 3 的类型为 'int *'

Pytorch预期类型为Long,但类型为int

Kotin类型不匹配:推断类型为Int?但是Int被期望

C - 格式指定类型 'int' 但参数类型为 'char *' [-Wformat]

主键类型:int vs long

使用gcc编译时出现错误:警告:格式指定类型为'int *',但参数的类型为'double *'

“类型为“ int(*)()”的参数与类型为int的参数不兼容”错误?

错误:类型为'bar <int>&'的参数的默认参数的类型为'bar <int>'

错误:将“long int (*)[4]”赋值给“long int [4][4]”时的类型不兼容

将数据类型从int更改为long long int时发生运行时错误

类型为“ int”的参数与类型为“ int *”的参数不兼容

错误无法初始化右值类型为'int'的类型为'int *'的参数

格式'%c'期望的参数类型为'char *',但是参数2的类型类型为'char(*)[0]'

frida:错误:a():参数类型不匹配:重载('int','int','long','java.lang.String','java.lang.Object')

android-错误的onListItemClick,未为Fragment类型定义onListItemClick(ListView,View,int,long)方法

一元*的冲突类型错误和无效类型参数具有int

长字符串文字的类型是否为long int *?