(int) + 4*5; Perché è possibile (aggiungere un tipo con un valore) ? (provato con g ++ e gcc.) So che non ha senso (e non ha effetto), ma voglio sapere perché è possibile.
Diciamo che vado a compilare un codice sorgente C ++ scritto male che invoca comportamenti indefiniti, e quindi (come si suol dire) "tutto può succedere". Dal punto di vista di ciò che la specifica del linguaggio C ++ ritiene accettabile in un compilatore "conforme", fa "qualsiasi cosa" in questo scenario …
In c++03esso è abbastanza chiaro che l'eliminazione di un puntatore nullo non ha alcun effetto. Infatti, è esplicitamente affermato in §5.3.5/2quanto: In entrambe le alternative, se il valore dell'operando di cancellazione è il puntatore nullo, l'operazione non ha effetto. Tuttavia, nell'attuale bozza di c++0xquesta frase sembra mancare. Nel resto della …
Le due condizioni che definiscono una funzione puresono le seguenti: Nessun effetto collaterale (ovvero sono consentite solo modifiche all'ambito locale) Restituisce sempre lo stesso output, dato lo stesso input Se la prima condizione è sempre vera, ci sono volte in cui la seconda condizione non è vera? Cioè è davvero …
(In riferimento a questa domanda e risposta .) Prima dello standard C ++ 17, la seguente frase era inclusa in [basic.compound] / 3 : Se un oggetto di tipo T si trova in un indirizzo A, si dice che un puntatore di tipo cv T * il cui valore è …
Posso usare il NULLpuntatore come sostituto del valore di 0? O c'è qualcosa di sbagliato in questo fare? Ad esempio: int i = NULL; in sostituzione di: int i = 0; Come esperimento ho compilato il seguente codice: #include <stdio.h> int main(void) { int i = NULL; printf("%d",i); return 0; …
Guardando questo codice: static int global_var = 0; int update_three(int val) { global_var = val; return 3; } int main() { int arr[5]; arr[global_var] = update_three(2); } Quale voce dell'array viene aggiornata? 0 o 2? C'è una parte nella specifica di C che indica la precedenza dell'operazione in questo caso …
Considera il seguente frammento: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Ovviamente si bloccherebbe sulla maggior parte delle piattaforme, perché la dimensione dello stack predefinita è generalmente inferiore a 20 MB. Ora considera il seguente codice: #include <array> #include <vector> int main() { using …
Ho il codice seguente: namespace A { struct Foo { int a; }; } struct Foo { int b; }; struct Bar : public A::Foo { Bar(Foo foo) { c = foo.b; } int c; }; I compilatori C ++ si lamentano di "c = foo.b" perché A :: Foo …
L'argomento è stato discusso in precedenza , ma questo non è un duplicato. Quando qualcuno chiede la differenza tra decltype(a)e decltype((a)), la solita risposta è - aè una variabile, (a)è un'espressione. Trovo questa risposta insoddisfacente. Innanzitutto, aè anche un'espressione. Le opzioni per un'espressione primaria includono, tra le altre cose: (espressione) …
In questa risposta , zwol ha affermato: Il modo corretto di convertire due byte di dati da una fonte esterna in un intero con segno a 16 bit è con funzioni di supporto come questa: #include <stdint.h> int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0]) << 8) | …
Quando ho esaminato la grammatica BNF di C, ho pensato che fosse strano che la regola di produzione per una dichiarazione fosse simile a questa (secondo https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of% 20C% 20in% 20Backus-Naur% 20form.htm ): <declaration> ::= {<declaration-specifier>}+ {<init-declarator>}* ; Perché usare un *quantificatore (che significa zero o più occorrenze) per il init-declarator? …
Di seguito, utilizziamo N4140 (standard C ++ 14). In base al § 17.6.3.4 Requisiti di hash , Il valore restituito dipende solo dall'argomento k per la durata del programma . [Nota: pertanto tutte le valutazioni dell'espressione h(k)con lo stesso valore per kproducono lo stesso risultato per una data esecuzione del …
Questo codice non viene compilato in Clang (6,7,8,9, trunk), ma viene compilato correttamente in GCC (7.1, 8.1, 9.1): template<class T> struct TypeHolder { using type = T; }; template<int i> class Outer { private: template<class T> static constexpr auto compute_type() { if constexpr (i == 42) { return TypeHolder<bool>{}; } …
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.