bonjour,

premier post sur ce forum que je ne connais pas du tout, et voici pour commencer :
j'ai fait une petite fonction pour calculer la factorielle d'un nombre, que voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
 
long int fact(long int n)
{
   if (n == 1) return n;
   else return n*fact(n-1);
}
 
int main(int argc, char **argv)
{
  if (atoi(argv[1]) == 0) 
    printf("0");
  else
    printf("%l",fact(atol(argv[1])));
  return 0;
}
voici les erreurs que j'ai avec gcc :
./fact.c: In function ‘main’:
./fact.c:15: warning: conversion lacks type at end of format
./fact.c:15: warning: too many arguments for format

au départ, et pour l'exercice, j'avais utilisé le type int. Seulement celui-ci est très rapidement mis hors contexte (fact 20 devient négatif, 21 dépasse allègrement).

je ne vois pas où est l'erreur... Je crois que les types sont bons, que printf et atol sont bien utilisés... Avec le type int, la fonction fact marchait parfaitement...

Des idées ? Merci