QCM en programmation C – Opérateurs logiques et relationnels

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

 
 

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

void main()
{
    int x = 1, y = 0, z = 5;
    int a = x && y || z++;
    printf("%d", z);
}

A 0

B 5

C 6

D Autres

C

 

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

void main()
{
     int x = 1, y = 0, z = 5;
     int a = x && y && z++;
     printf("%d", z);
}

A 0

B 6

C 5

D Autres

C

 

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

int main()
{
     int a = 1, b = 0, c = 3;
     a > b ? printf("%d", c) : return c;
}

A 1

B 3

C Erreur d’exécution

D Erreur de compilation

C

La sortie:

error: expected expression before 'return'
a > b ? printf("%d", c) : return c;
                          ^

Nous ne pouvons pas mettre « return » dans une condition ternaire. Pour effectuer ce genre d’instruction nous utilisons l’instruction « if » comme indiqué ci-dessous:

#include <stdio.h>
 
int main()
{
    int a = 1, b = 0, c = 3;
    if(a > b )
        printf("%d", c); 
    else
        return c;
}

 

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

void main()
{
    int a = 1, c = 3;
    int b = a << 3;
    printf(" %d\n", b);
}

A 8

B 1

C -724794438

D Erreur d’exécution

A
La valeur de base (a = 1) : 0000 0001
Décalage à gauche (a << 3) : 0000 1000

 

 

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

void main()
{
    int a = 0, b = 2, c = 3;
    int x = a & b | c;
    printf("%d", x);
}

A 2

B 3

C 0

D Dépend du compilateur

B
ET bit-à-bit

ET bit-à-bit est un opérateur binaire (opère sur deux opérandes). Il est noté par &.
L’opérateur & compare les bits correspondants de deux opérandes. Si les deux bits sont à 1, cela donne 1. Si l’un des bits n’est pas à 1, il donne 0. Par exemple le ET bit-à-bit de a & b :

a = 0 (en décimal) = 00000000 (en binaire)
b = 2 (en décimal) = 00000010 (en binaire)

Opération binaire ET bit-à-bit de 0 et 2

  00000000 
& 00000010
  __________
= 00000000 = 0 (en décimal)

Vous pouvez utiliser notre outil pour convertir de décimal en binaire.
 

Ou bit-à-bit

Ou bit-à-bit est un opérateur binaire (opère sur deux opérandes). C’est noté |.
L’opérateur | compare les bits correspondants de deux opérandes. Si l’un des bits est 1, il donne 1. Sinon, il donne 0. Par exemple le OU bit-à-bit de (a & b) | c:

(a & b) = 0 (en décimal) = 00000000 (en binaire)
c = 3 (en décimal) = 00000011 (en binaire)

Opération binaire Ou bit-à-bit de 0 et 3

  00000000
| 00000011
  __________
= 00000011 = 3 (en décimal)

 

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

int main()
{
     int a = 0, b = 0;
     if (a && (b = a + 10))
         //faire quelque chose
         ;
         ;
}

A 10

B 0

C Dépend du compilateur

D Dépend de la norme

B
Le compilateur C le plus récent (actuellement C99 avec quelques modifications) retourn 0 par défaut, s’il n’y a pas d’instruction de retour explicite à la fin de la fonction.

 

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

int main()
{
     int a = 10, b = 0;
     if (a || (b = a + 10))
         //faire quelque chose
         ;
         ;
}

A 20

B 0

C Dépend du compilateur

D Dépend de la norme

B

 

 

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

int main()
{
     int a = 1;
     if (a++ && (a == 1))
         printf("Oui\n");
     else
         printf("Non\n");
}

A Non

B Oui

C Dépend du compilateur

D Dépend de la norme

A

 

3 réflexions sur “QCM en programmation C – Opérateurs logiques et relationnels

  • juillet 24, 2020 à 12:53 am
    Permalien

    Au niveau de la réponse à la question 6, au moment où j’écris le standard C le plus récent est C17.

    Répondre
  • juillet 24, 2020 à 1:00 am
    Permalien

    On a une erreur de compilation pour la question 7, aucun des choix proposés ne correspond.

    Répondre
    • juillet 25, 2020 à 12:27 pm
      Permalien

      Merci pour cette remarque 🙂

      Répondre

Laisser un commentaire

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