[Résolu][C]Problème fonction sizeof programme

a marqué ce sujet comme résolu.

Bonjour,

je dois réaliser un petit programme pour mon école qui consiste a afficher sur chaque ligne la valeur et la taille des variables declarees dans la fonction main comme ceci : -10 <-> 4

J’ai réalisé ceci :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>

int main(void) 
{
    int nb1 = -10;
    unsigned int nb2 = 10;
    float nb3 = 64.2;
    double nb4 = 0.001;
    long int nb5 = 10;
    unsigned long nb6 = 10;
    long int nb7 = -10;
    unsigned long nb8 = -10;
    char nb9 = 'A';

    printf("%d <-> %d\n",nb1,sizeof(nb1));
    printf("%u <-> %d\n",nb2,sizeof(nb2));
    printf("%f <-> %d\n",nb3,sizeof(nb3));
    printf("%lf <-> %d\n",nb4,sizeof(nb4));
    printf("%ld <-> %d\n",nb5,sizeof(nb5));
    printf("%lu <-> %d\n",nb6,sizeof(nb6));
    printf("%i <-> %d\n",nb7,sizeof(nb7));
    printf("%d <-> %d\n",nb8,sizeof(nb8));
    printf("%c <-> %d\n",nb9,sizeof(nb9));

    return 0;
}

Seulement le vérificateur automatique m’indique que le proramme n’est pas correcte et je sais plus trop comment me débrouiller :-s

Merci pour votre aide :)

+0 -0

Salut et bienvenue sur le site. :)

Seulement le vérificateur automatique m’indique que le proramme n’est pas correcte et je sais plus trop comment me débrouiller :-s

J’imagine que tu parles du compilateur. S’il te donne une erreur, il te faut essayer de la comprendre et nous la donner pour que nous puissions t’aider au mieux (donc copier l’erreur et nous dire sur quelle ligne elle est signalée).

Je pense qu’ici ton problème est la ligne 13. nb8 est un unsigned long int donc est on signé. Il ne peut pas prendre de valeurs négatives. Remplace le -10 par 10.

+0 -0

Oui effectivement du compilateur .. ^^

Voici les erreurs , jai beau eu cherché je ne vois pas les problèmes :s De plus pour nb8 jai trouvé ca étrange aussi, mais cela fait partis de l’énoncé..

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
size_of_v2.c: In function main:
size_of_v2.c:24: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
     printf("%d <-> %d\n",nb1,sizeof(nb1));
     ^
size_of_v2.c:25: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
     printf("%u <-> %d\n",nb2,sizeof(nb2));
     ^
size_of_v2.c:26: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
     printf("%f <-> %d\n",nb3,sizeof(nb3));
     ^
size_of_v2.c:27: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
     printf("%lf <-> %d\n",nb4,sizeof(nb4));
     ^
size_of_v2.c:28: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
     printf("%ld <-> %d\n",nb5,sizeof(nb5));
     ^
size_of_v2.c:29: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
     printf("%lu <-> %d\n",nb6,sizeof(nb6));
     ^
size_of_v2.c:30: warning: format %i expects argument of type int, but argument 2 has type long int [-Wformat=]
     printf("%i <-> %d\n",nb7,sizeof(nb7));
     ^
size_of_v2.c:30: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
size_of_v2.c:31: warning: format %d expects argument of type int, but argument 2 has type long unsigned int [-Wformat=]
     printf("%d <-> %d\n",nb8,sizeof(nb8));
     ^
size_of_v2.c:31: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
size_of_v2.c:32: warning: format %d expects argument of type int, but argument 3 has type long unsigned int [-Wformat=]
     printf("%c <-> %d\n",nb9,sizeof(nb9));
     ^

Que comprends-tu de l’avertissement qui t’es donné ? As-tu essayé de le traduire. Ici, on te dit par exemple que le format %d attend une variable de type int or le paramètre que tu donne est de type long unsigned int. Il te faut donc chercher comment afficher un unsigned long int avec printf. Pour ça, tu peux chercher man printf sur un moteur de recherche (tu dois utiliser un %lu pour afficher un long unsigned int). Je te laisse chercher ce qu’il faut mettre pour le long int.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte