QCM en programmation C – Types et tailles des données – Partie 2

QCM sur C avec des réponses pour la préparation des entretiens, des tests en ligne, des examens etc.
 
 

1. Commenter la sortie de ce code C?
#include <stdio.h>

int main()
{
    float a = 0.1;
    if (a == 0.1)
        printf("equal\n");
    else
        printf("not equal\n");
}

A equal

B not equal

C la sortie dépend du compilateur

D aucun de ces choix

B

La valeur 0.1 par défaut est de type double qui a une représentation différente de celle du float, ce qui entraîne une inégalité même après la conversion. La sortie est comme suite:

$gcc prog1.c
$ a.out
not equal

 

2. Commenter la sortie de ce code C?
#include <stdio.h>

int main()
{
    float a = 0.1;
    if (a == 0.1f)
        printf("equal\n");
    else
        printf("not equal\n");
}

A equal

B not equal

C la sortie dépend du compilateur

D aucun de ces choix

A

Pour tester l’égalité d’un nombre de type float on doit suivi la valeur avec la lettre f. La sortie est comme suite:

$gcc prog2.c
$ a.out
equal

 

3. Commenter la sortie de ce code C?
#include <stdio.h>

int main()
{
    int x = 20000;
    double y = 26;
    int *p = &x;
    double *q = &y;
    printf("La taille de p = %d et q = %d", sizeof(p), sizeof(q));
    return 0;
}

A La taille de p = 4 et q = 4

B La taille de p = 4 et q = 8

C erreur de compilation

D La taille de p = 8 et q = 8

A, D

La taille de n’importe quel type de pointeur est 4 sur une machine 32 bits, et 8 sur une machine 64 bits. La sortie sur une machine 32 bits est comme suite:

$gcc prog2.c
$ a.out
La taille de p = 4 et q = 4

La sortie sur une machine 64 bits est comme suite:

$gcc prog2.c
$ a.out
La taille de p = 8 et q = 8

 

 

4. Quel conversion est correct par rapport à la taille des types de données?

A char > int > float

B int > char > float

C char < int < double

D double > char > int

C
char a moins d’octets que int et int a moins d’octets que le double dans n’importe quel système.

 

5. Quelle est la sortie de ce code C (sur une machine 64 bits)?
#include <stdio.h>

union S
{
     int a;
     char b;
};

int main()
{
    union S s;
    printf("%d", sizeof(s));
    return 0;
}

A 8

B 5

C 9

D 4

D

Étant donné que la taille d’une variable de type « union » est la taille maximum de ses éléments, ici « int » est le plus grand donc c’est 4. La sortie est comme suite:

$gcc prog3.c
$ a.out
4

 

6. Quelle est la sortie de ce code C?
#include <stdio.h>

int main()
{
    float y = 'a';
    printf("%f", y);
    return 0;
}

A a

B erreur d’exécution

C a.0000000

D 97.000000

D

Étant donné que la valeur ASCII de « a » est 97, la même chose est affectée à la variable de type float c’est-à-dire 97.000000. La sortie est comme suite:

$gcc prog4.c
$ a.out
97.000000

 

7. Lequel de ces types de données dont la taille est variable?

A int

B struct

C float

D double

B
Étant donné que la taille d’une structure dépend de ses champs, donc elle a une taille variable par rapport à d’autres types.

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *