Loading lang_c_qu_03...

enib_small.png LANG-C Qu_03 — Questionnaire sur le chapitre 03_Types

{1} Taille des types

Quelle est le nom standard du type du résultat renvoyé par l'opérateur sizeof ?
 1 ? 


Vrai ou faux ? L'opérateur sizeof peut être indifféremment appliqué à un nom de type ou à une expression.
 2 ? 


Vrai ou faux ? Quand l'opérateur sizeof est appliqué à une expression, celle-ci est évaluée.
 3 ? 


Vrai ou faux ? Quand l'opérateur sizeof est appliqué à une expression, celle-ci n'est pas évaluée.
 4 ? 


Vrai ou faux ? La norme du langage C indique que la valeur de sizeof(int) est identique sur toutes les plateformes d'exécution.
 5 ? 


Vrai ou faux ? La norme du langage C indique que la valeur de sizeof(int) peut varier d'une plateforme d'exécution à l'autre.
 6 ? 


Vrai ou faux ? La norme du langage C indique que la valeur de sizeof(char) est identique sur toutes les plateformes d'exécution.
 7 ? 


Vrai ou faux ? La norme du langage C indique que la valeur de sizeof(char) peut varier d'une plateforme d'exécution à l'autre.
 8 ? 


Quelle garantie nous donne la norme du langage C à propos de la valeur de sizeof(char) ?
 9 ? 


Quelle garantie nous donne la norme du langage C à propos de la valeur de sizeof(int) (en supposant qu'un byte correspond à un octet) ?
 10 ? 


Ordonner à l'aide des relations
<=
,
<
ou == les valeurs de l'opérateur sizeof appliqué aux types int, long long, char, long et short.
 11 ? 


Quel nom de type fourni par le fichier d'en-tête standard
<stdint.h>
correspond à un entier signé occupant exactement un octet ?
 12 ? 


Quel nom de type fourni par le fichier d'en-tête standard
<stdint.h>
correspond à un entier non-signé occupant exactement un octet ?
 13 ? 


Quel nom de type fourni par le fichier d'en-tête standard
<stdint.h>
correspond à un entier signé occupant exactement deux octets ?
 14 ? 


Quel nom de type fourni par le fichier d'en-tête standard
<stdint.h>
correspond à un entier non-signé occupant exactement deux octets ?
 15 ? 


Quel nom de type fourni par le fichier d'en-tête standard
<stdint.h>
correspond à un entier signé occupant exactement quatre octets ?
 16 ? 


Quel nom de type fourni par le fichier d'en-tête standard
<stdint.h>
correspond à un entier non-signé occupant exactement quatre octets ?
 17 ? 


Quel nom de type fourni par le fichier d'en-tête standard
<stdint.h>
correspond à un entier signé occupant exactement huit octets ?
 18 ? 


Quel nom de type fourni par le fichier d'en-tête standard
<stdint.h>
correspond à un entier non-signé occupant exactement huit octets ?
 19 ? 
{2} Dépassement de capacité

Vrai ou faux ? Lorsqu'on tente d'affecter à une donnée une valeur qui ne respecte pas les limites imposées par son type, un plantage du programme se produit immédiatement.
 20 ? 


Vrai ou faux ? Lorsqu'on tente d'affecter à une donnée une valeur qui ne respecte pas les limites imposées par son type, une perte d'information à lieu.
 21 ? 


Vrai ou faux ? Il est parfaitement correct d'écrire un algorithme qui compte sur le fait qu'un entier non-signé trop grand ou trop petit reboucle vers l'autre extrémité de la plage de valeurs de son type.
 22 ? 


Vrai ou faux ? Il est parfaitement correct d'écrire un algorithme qui compte sur le fait qu'un entier signé trop grand ou trop petit reboucle vers l'autre extrémité de la plage de valeurs de son type.
 23 ? 


Vrai ou faux ? Il est totalement incorrect d'écrire un algorithme qui compte sur le fait qu'un entier signé trop grand ou trop petit reboucle vers l'autre extrémité de la plage de valeurs de son type.
 24 ? 


Vrai ou faux ? Il est totalement incorrect d'écrire un algorithme qui compte sur le fait qu'un entier non-signé trop grand ou trop petit reboucle vers l'autre extrémité de la plage de valeurs de son type.
 25 ? 


Quelle macro, fournie par le fichier d'en-tête standard
<stdint.h>
, permet de connaître la plus petite valeur possible pour un entier signé occupant exactement deux octets ?
 26 ? 


Quelle macro, fournie par le fichier d'en-tête standard
<stdint.h>
, permet de connaître la plus grande valeur possible pour un entier signé occupant exactement deux octets ?
 27 ? 


Quelle macro, fournie par le fichier d'en-tête standard
<stdint.h>
, permet de connaître la plus grande valeur possible pour un entier non-signé occupant exactement deux octets ?
 28 ? 


Quelle macro, fournie par le fichier d'en-tête standard
<limits.h>
, permet de connaître la plus petite valeur possible pour le type char ?
 29 ? 


Quelle macro, fournie par le fichier d'en-tête standard
<limits.h>
, permet de connaître la plus grande valeur possible pour le type char ?
 30 ? 


Quelle macro, fournie par le fichier d'en-tête standard
<limits.h>
, permet de connaître la plus petite valeur possible pour le type int ?
 31 ? 


Quelle macro, fournie par le fichier d'en-tête standard
<limits.h>
, permet de connaître la plus grande valeur possible pour le type int ?
 32 ? 


Réaliser le calcul qui, sans risquer de provoquer de débordement de capacité, place dans une variable result de type int32_t le pourcentage percent d'une variable value de ce même type.
 33 ? 


Réaliser le calcul qui, sans risquer de provoquer de débordement de capacité, place dans une variable result de type int32_t la moyenne de deux variables value1 et value2 de ce même type.
 34 ? 
{3} Limites des réels

Pourquoi n'est-on pas certain d'observer exactement dix itérations ?
for(double x=0.0; x<3.0; x+=0.3)
{
  printf("x=%g\n", x);
}
 35 ? 


Pourquoi risque-t-on d'obtenir une boucle infinie ?
for(double x=0.0; x!=3.0; x+=0.3)
{
  printf("x=%g\n", x);
}
 36 ? 


Pourquoi l'affichage du message est-il très incertain ?
int n=obtainAnyValue();
double step=n*0.1;
if(10.0*step==n)
{
  printf("correct\n");
}
 37 ? 


Quelle macro fournie par le fichier d'en-tête standard
<float.h>
permet de connaître la plus petite valeur positive possible pour le type float ?
 38 ? 


Quelle macro fournie par le fichier d'en-tête standard
<float.h>
permet de connaître la plus grande valeur possible pour le type float ?
 39 ? 


Quelle macro fournie par le fichier d'en-tête standard
<float.h>
permet de connaître la plus petite valeur positive possible pour le type double ?
 40 ? 


Quelle macro fournie par le fichier d'en-tête standard
<float.h>
permet de connaître la plus grande valeur possible pour le type double ?
 41 ? 


Pourquoi cette boucle n'est-elle pas infinie alors que x est systématiquement incrémenté par rapport à sa valeur mémorisée dans last ?
float last=-1.0;
for(float x=0.0f; x>last; x+=1.0f)
{
  last=x;
}
printf("done!\n")
 42 ? 


Pourquoi est-il possible que ce message apparaisse ?
float x=obtainAnyValue();
if(x+1.0f<=x)
{
  printf("that's weird!\n");
}
 43 ?