Lo standard C11 sembra implicare che le istruzioni di iterazione con espressioni di controllo costanti non debbano essere ottimizzate. Sto prendendo il mio consiglio da questa risposta , che cita specificamente la sezione 6.8.5 del progetto di standard: Un'istruzione di iterazione la cui espressione di controllo non è un'espressione costante …
Avevo l'impressione che l'accesso a un unionmembro diverso dall'ultimo set fosse UB, ma non riesco a trovare un riferimento solido (a parte le risposte che affermano che è UB ma senza alcun supporto dallo standard). Quindi, è un comportamento indefinito?
Per qualche motivo stavo entrando di nascosto nel sorgente .NET Framework per la classe Doublee ho scoperto che la dichiarazione di ==è: public static bool operator ==(Double left, Double right) { return left == right; } La stessa logica vale per ogni operatore. Qual è il punto di tale definizione? …
vector<int> v; v.push_back(1); v.push_back(v[0]); Se il secondo push_back provoca una riallocazione, il riferimento al primo numero intero nel vettore non sarà più valido. Quindi questo non è sicuro? vector<int> v; v.push_back(1); v.reserve(v.size() + 1); v.push_back(v[0]); Questo lo rende sicuro?
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 e versioni successive stampa "Stai usando clang ++!" e avvisa che la cattura foo non è stata utilizzata. g ++ 4.9.0 e versioni successive stampa "Stai usando g ++!" e …
Considera questo programma abbastanza inutile: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } Fondamentalmente stiamo cercando di creare un lambda che ritorni da …
Attualmente sto imparando C ++ con il libro C ++ Primer e uno degli esercizi nel libro è: Spiega cosa fa la seguente espressione: someValue ? ++x, ++y : --x, --y Cosa sappiamo? Sappiamo che l'operatore ternario ha una precedenza maggiore dell'operatore virgola. Con gli operatori binari questo era abbastanza …
Come seguito interessante (non di grande importanza pratica) alla mia domanda precedente: perché il C ++ ci consente di racchiudere il nome della variabile tra parentesi quando si dichiara una variabile? Ho scoperto che combinare la dichiarazione tra parentesi con la caratteristica del nome della classe iniettata può portare a …
C è un po ', non esattamente, un sottoinsieme di C ++. Quindi possiamo usare la maggior parte delle funzioni / intestazioni C in C ++ cambiando un po 'il nome ( stdio.hin cstdio, stdlib.hin cstdlib). La mia domanda è in realtà una specie di semantica. Nel codice C ++ …
Qualcuno può dare una definizione chiara insieme a un semplice esempio che spieghi cos'è un "inferno di richiamata" per qualcuno che non conosce JavaScript e node.js? Quando (in che tipo di impostazioni) si verifica il "problema dell'inferno di richiamata"? Perché si verifica? "Callback hell" è sempre correlato a calcoli asincroni? …
Una domanda un po 'strana, tuttavia, se ricordo bene, il codice sorgente C ++ non richiede un file system per memorizzare i suoi file. Avere un compilatore che scansiona documenti scritti a mano tramite una fotocamera sarebbe un'implementazione conforme. Anche se praticamente non ha molto senso. Tuttavia C ++ 20 …
In linguaggio C, se inizializza un array come questo: int a[5] = {1,2}; quindi tutti gli elementi dell'array che non sono inizializzati esplicitamente verranno inizializzati implicitamente con zeri. Ma, se inizializzo un array come questo: int a[5]={a[2]=1}; printf("%d %d %d %d %d\n", a[0], a[1],a[2], a[3], a[4]); produzione: 1 0 1 …
Questo pezzo di codice è valido (e ha un comportamento definito)? int &nullReference = *(int*)0; Sia g ++ e clang ++ compilarlo senza alcun preavviso, anche quando si utilizza -Wall, -Wextra, -std=c++98, -pedantic, -Weffc++... Ovviamente il riferimento non è effettivamente nullo, poiché non è possibile accedervi (significherebbe dereferenziare un puntatore …
Sono nuovo in C ++. Vedo spesso una dichiarazione condizionale come di seguito: if statement_0; else if statement_1; Domanda: Sintatticamente , devo trattare else ifcome una singola parola chiave? O è effettivamente un'istruzione annidata ifall'interno dell'esterno elsecome di seguito? if statement_0; else if statement_1;
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.