vector<int> v(22);
bool b = (v[6]);
printf("%d", !b);
Faux
0
1
Ce code comporte une erreur.
Q2. Pourquoi l'utilisation de cette ligne est-elle considérée comme une mauvaise pratique ? (Alternative : Pourquoi l'utilisation de cette ligne est-elle considérée comme une mauvaise pratique ?)
usingnamespace std;
Le code compilé est toujours plus volumineux en raison de tous les symboles importés.
Si le code utilise une fonction définie dans deux bibliothèques différentes avec le même prototype mais éventuellement avec des implémentations différentes, il y aura une erreur de compilation due à l'ambiguïté.
Il inclut automatiquement tous les fichiers d'en-tête de la bibliothèque standard (cstdint, cstdlib, cstdio, iostream, etc.).
Il oblige le compilateur à imposer l'inclusion exclusive des fichiers d'en-tête appartenant à la bibliothèque standard, générant une erreur de compilation lorsqu'un fichier d'en-tête différent est inclus.
Q5. Laquelle des affirmations suivantes concernant la différence entre les pointeurs et les itérateurs est vraie ?
Alors que les pointeurs sont des variables qui contiennent des adresses mémoire, les itérateurs sont des fonctions génériques utilisées pour parcourir des conteneurs. Cette fonction permet au programmeur de mettre en œuvre un code de lecture et d'écriture pendant que le conteneur est parcouru.
Incrémenter un itérateur signifie toujours accéder à l'élément suivant dans le conteneur (le cas échéant), quel que soit le conteneur. Incrémenter le pointeur signifie pointer vers l'élément suivant en mémoire, pas toujours l'élément suivant.
Les pointeurs sont des variables qui contiennent des adresses mémoire tandis que l'itérateur est des entiers non signés qui se réfèrent à des décalages dans les tableaux.
Tous les itérateurs sont implémentés avec des pointeurs donc tous les itérateurs sont des pointeurs mais tous les pointeurs ne sont pas des itérateurs.
Q9. Lequel des éléments suivants n'est pas une différence entre une classe et une structure ?
Parce que les structures font partie du langage de programmation C, il existe une certaine complexité entre les structures C et C++. Ce n'est pas le cas avec les classes.
Les classes peuvent avoir des fonctions membres ; les structures sont privées.
Le spécificateur d'accès par défaut pour les membres d'une structure est public, tandis que pour les membres de la classe, il est privé.
Les paramètres de type modèle peuvent être déclarés avec les classes, mais pas avec le mot-clé struct.
Les modèles peuvent être utilisés avec des classes et des structures
RéférenceRéférence
Q10. Supposez que vous devez conserver une structure de données avec une autorisation d'accès à une ressource basée sur les jours de la semaine, mais vous ne pouvez pas utiliser une variable booléenne pour chaque jour. Vous devez utiliser un bit par jour de la semaine. Lequel des éléments suivants est une implémentation correcte d'une structure avec des champs de bits pour cette application ?
A
typedefstruct {int sunday:1;
int monday:1;
// more daysint friday:1;
int saturday:1;
} weekdays;
B
typedefchar[7]: weekdays;
C
typedefstruct { bit sunday:1;
bit monday:1;
// more days bit friday:1;
bit saturday:1;
} weekdays;
D
typedefstruct { bit sunday;
bit monday;
// more days bit friday;
bit saturday;
} weekdays;
RéférenceNOTE: La syntaxe correcte est que la taille de chaque variable est de 1 bit. bit n'est pas un type en C++.
Q11. Qu'est-ce qu'une lvalue ?
C'est une expression constante, c'est-à-dire une expression composée de constantes et d'opérations.
C'est une expression qui représente un objet avec une adresse.
C'est une expression adaptée à l'opérande du côté gauche dans une opération binaire.
C'est une valeur de position, c'est-à-dire une adresse mémoire adaptée à l'assignation à un pointeur ou à une référence.
Q12. Que fait le spécificateur de type auto dans cette ligne de code (depuis C++11) ?
auto x = 4000.22;
Il spécifie que le type de x sera déduit de l'initialisateur - dans ce cas, double.
Il spécifie que le type de x est automatique, ce qui signifie qu'il peut être assigné à différents types de données tout au long du programme.
Il spécifie que x est une variable avec une durée de stockage automatique.
Il spécifie que plus de mémoire sera allouée pour x au cas où il aurait besoin de plus d'espace, évitant ainsi la perte de données due au débordement.
Q13. Qu'est-ce qu'un modèle de classe ?
classe écrite avec le paradigme de la programmation générique, spécifiant le comportement en termes de paramètre de type plutôt que de type spécifique.
superclasse vide destinée à l'héritage et au polymorphisme.
classe qui ne consiste qu'en une variable membre, sans constructeur, destructeur ou fonctions membres.
code source squelette pour une classe où le programmeur doit remplir des parties spécifiques pour définir les types de données et les algorithmes utilisés.
Q15. Quelle est la sortie du code donné ci-dessous ?
#include<iostream>intmain(){
int x=10, y=20;
std::cout << "x = " << x++ << " and y = " << --y << std::endl;
std::cout << "x = " << x-- << " and y = " << ++y << std::endl;
return(0);
}
x = 10 et y = 20 x = 11 et y = 19
x = 11 et y = 19 x = 10 et y = 20
x = 10 et y = 19 x = 11 et y = 20
x = 11 et y = 20 x = 10 et y = 19
Q16. Que signifient les deux parties spécifiées entre parenthèses dans une boucle for basée sur une plage, séparées par un deux-points ?
Le premier est une déclaration de variable qui contiendra un élément dans une séquence. Le second est la séquence à parcourir.
Le premier est un itérateur, et le second est la valeur d'incrémentation à ajouter à l'itérateur.
Le premier est la variable d'itération. Le second est une paire std::pair qui spécifie la plage (début et fin) dans laquelle la variable va itérer.
Le premier est un objet conteneur. Le second est une paire std::pair qui spécifie la plage (début et fin) dans laquelle les éléments seront accédés dans la boucle.
Q17. Quelle est la sortie du code donné ci-dessous ?