vector<int> v(22);
bool b = (v[6]);
printf("%d", !b);
Falso
0
1
Questo codice ha un errore.
Q2. Quale delle seguenti è una ragione per cui l'utilizzo di questa riga è considerato una cattiva pratica? (Alternativa: Perché l'utilizzo di questa riga è considerato una cattiva pratica?)
usingnamespace std;
Il codice compilato è sempre più grande a causa di tutti i simboli importati.
Se il codice utilizza una funzione definita in due diverse librerie con lo stesso prototipo ma possibilmente con implementazioni diverse, ci sarà un errore di compilazione dovuto all'ambiguità.
Include automaticamente tutti i file di intestazione nella libreria standard (cstdint, cstdlib, cstdio, iostream, ecc).
Fa sì che il compilatore imponga l'inclusione esclusiva dei file di intestazione appartenenti alla libreria standard, generando un errore di compilazione quando viene incluso un diverso file di intestazione.
Q5. Quale delle seguenti affermazioni è vera sulla differenza tra puntatori e iteratori?
Mentre i puntatori sono variabili che contengono indirizzi di memoria, gli iteratori sono funzioni generiche utilizzate per attraversare i contenitori. Questa funzione consente al programmatore di implementare codice di lettura e scrittura mentre il contenitore viene attraversato.
Incrementare un iteratore significa sempre accedere all'elemento successivo nel contenitore (se presente), indipendentemente dal contenitore. Incrementare il puntatore significa puntare all'elemento successivo in memoria, non sempre all'elemento successivo.
I puntatori sono variabili che contengono l'indirizzo di memoria mentre l'iteratore sono interi senza segno che si riferiscono a offset in array.
Tutti gli iteratori sono implementati con puntatori quindi tutti gli iteratori sono puntatori ma non tutti i puntatori sono iteratori.
Q9. Quale delle seguenti non è una differenza tra una classe e una struttura?
Poiché le strutture fanno parte del linguaggio di programmazione C, c'è una certa complessità tra le strutture di C e C++. Questo non è il caso delle classi.
Le classi possono avere funzioni membro; le strutture sono private.
Il specificatore di accesso predefinito per i membri di una struttura è pubblico, mentre per i membri della classe è privato.
I parametri di tipo modello possono essere dichiarati con classi, ma non con la parola chiave struct.
I modelli possono essere utilizzati sia con classi che con strutture
ReferenzaReference
Q10. Supponiamo che tu abbia bisogno di mantenere una struttura dati con il permesso di accedere a una risorsa basata sui giorni della settimana, ma non puoi usare una variabile bool per ogni giorno. Devi usare un bit per ogni giorno della settimana. Quale delle seguenti è un'implementazione corretta di una struttura con campi di bit per questa applicazione?
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;
ReferenceNOTA: La sintassi corretta è che ogni dimensione della variabile è di 1 bit. bit non è un tipo in C++.
Q11. Cos'è un lvalue?
È una espressione costante, ovvero un'espressione composta da costanti e operazioni.
È un'espressione che rappresenta un oggetto con un indirizzo.
È un'espressione adatta per l'operando del lato sinistro in un'operazione binaria.
È un valore di posizione, ovvero un indirizzo di memoria adatto per l'assegnazione a un puntatore o riferimento.
Q12. Cosa fa il specificatore di tipo auto in questa riga di codice (da C++11)?
auto x = 4000.22;
Specifica che il tipo di x sarà dedotto dall'inizializzatore - in questo caso, double.
Specifica che il tipo di x è automatico, il che significa che può essere assegnato diversi tipi di dati durante il programma.
Specifica che x è una variabile con durata di archiviazione automatica.
Specifica che verrà allocata più memoria per x nel caso in cui necessiti di più spazio, evitando la perdita di dati dovuta all'overflow.
Q13. Una classe template è un _?
classe scritta con il paradigma di programmazione generica, specificando il comportamento in termini di parametro di tipo anziché tipo specifico.
superclasse in bianco destinata all'ereditarietà e al polimorfismo.
classe che consiste solo di una variabile membro, senza costruttore, distruttore o funzioni membro.
codice sorgente scheletrico di una classe in cui il programmatore deve compilare parti specifiche per definire i tipi di dati e algoritmi utilizzati.
#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 e y = 20 x = 11 e y = 19
x = 11 e y = 19 x = 10 e y = 20
x = 10 e y = 19 x = 11 e y = 20
x = 11 e y = 20 x = 10 e y = 19
Q16. Qual è il significato delle due parti specificate tra parentesi in un ciclo for basato su intervallo, separate da due punti?
La prima è una dichiarazione di variabile che conterrà un elemento in una sequenza. La seconda è la sequenza da attraversare.
La prima è un iteratore, e la seconda è il valore di incremento da aggiungere all'iteratore.
La prima è la variabile di iterazione. La seconda è una std::pair che specifica l'intervallo (inizio e fine) in cui la variabile itererà.
La prima è un oggetto contenitore. La seconda è una std::pair che specifica l'intervallo (inizio e fine) in cui gli elementi saranno accessibili all'interno del ciclo.