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 :
voici les erreurs que j'ai avec gcc :
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; }
./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![]()
Partager