Ich weiß, dass Semikolons in Python nicht erforderlich sind, aber sie können verwendet werden, um mehrere Anweisungen in eine einzelne Zeile zu packen, z >>> x = 42; y = 54 Ich habe immer gedacht, dass ein Semikolon einem Zeilenumbruch entspricht. Daher war ich etwas überrascht zu erfahren (h / …
Bei folgendem Funktionsaufruf: f(g(), h()) Könnte eine Implementierung theoretisch g()und h()parallel ausgeführt werden, da die Reihenfolge der Auswertung von Funktionsargumenten nicht angegeben ist (soweit mir bekannt ist dies in C ++ 11 immer noch der Fall) ? Eine solche Parallelisierung konnte nur eingesetzt werden, gund es war hbekannt, dass sie …
Betrachten Sie diesen Code: 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); } Welcher Array-Eintrag wird aktualisiert? 0 oder 2? Gibt es einen Teil in der Spezifikation von C, der den Vorrang des Betriebs in …
Betrachten Sie das folgende Snippet: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Offensichtlich würde es auf den meisten Plattformen abstürzen, da die Standardstapelgröße normalerweise weniger als 20 MB beträgt. Betrachten Sie nun den folgenden Code: #include <array> #include <vector> int main() { using huge_type …
Ich habe folgenden Code: namespace A { struct Foo { int a; }; } struct Foo { int b; }; struct Bar : public A::Foo { Bar(Foo foo) { c = foo.b; } int c; }; C ++ - Compiler beschweren sich bei "c = foo.b", weil A :: Foo …
Das Thema wurde diskutiert vor , aber dies ist kein Duplikat. Wenn jemand nach dem Unterschied zwischen decltype(a)und fragt , lautet decltype((a))die übliche Antwort: - aist eine Variable, (a)ist ein Ausdruck. Ich finde diese Antwort unbefriedigend. Erstens aist auch ein Ausdruck. Die Optionen für einen primären Ausdruck umfassen unter anderem: …
In dieser Antwort machte zwol diese Behauptung: Die korrekte Methode zum Konvertieren von zwei Datenbytes von einer externen Quelle in eine 16-Bit-Ganzzahl mit Vorzeichen besteht in folgenden Hilfsfunktionen: #include <stdint.h> int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0]) << 8) | (((uint32_t)data[1]) << 0); return ((int32_t) val) - …
Beim Durchsehen der BNF-Grammatik von C fand ich es seltsam, dass die Produktionsregel für eine Deklaration so aussah (laut https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of%) 20C% 20in% 20Backus-Naur% 20form.htm ): <declaration> ::= {<declaration-specifier>}+ {<init-declarator>}* ; Warum einen *Quantifizierer (dh null oder mehr Vorkommen) für die verwenden init-declarator? Dadurch können Anweisungen wie int;oder void;syntaktisch gültig sein, …
Im Folgenden verwenden wir N4140 (C ++ 14 Standard). Gemäß § 17.6.3.4 Hash-Anforderungen , Der zurückgegebene Wert hängt nur vom Argument k für die Dauer des Programms ab . [Hinweis: Somit ergeben alle Auswertungen des Ausdrucks h(k)mit demselben Wert für kdasselbe Ergebnis für eine bestimmte Ausführung des Programms . - …
Dieser Code wird nicht in Clang (6,7,8,9, Trunk) kompiliert, sondern in GCC (7.1, 8.1, 9.1) einwandfrei kompiliert: 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>{}; } else …
Betrachten Sie den folgenden Code . struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } Hier wird der zweite Konvertierungsoperator durch die Überlastauflösung ausgewählt. Warum? Soweit ich es verstehe, sind die beiden Betreiber …
Ist es in Ordnung, den Wert des Standardarguments per const-Referenz wie in den folgenden Beispielen zurückzugeben: https://coliru.stacked-crooked.com/a/ff76e060a007723b #include <string> const std::string& foo(const std::string& s = std::string("")) { return s; } int main() { const std::string& s1 = foo(); std::string s2 = foo(); const std::string& s3 = foo("s"); std::string s4 = …
Betrachten Sie die folgende Struktur: struct s { int a, b; }; Typischerweise hat 1 diese Struktur die Größe 8 und die Ausrichtung 4. Was ist, wenn wir zwei struct sObjekte erstellen (genauer gesagt, wir schreiben zwei solche Objekte in den zugewiesenen Speicher), wobei das zweite Objekt das erste überlappt? …
Betrachten Sie diesen einfachen Code: void g(); void foo() { volatile bool x = false; if (x) g(); } https://godbolt.org/z/I2kBY7 Sie können sehen, dass der potenzielle Anruf an weder optimiert gccnoch clangoptimiert wird g. Dies ist nach meinem Verständnis richtig: Die abstrakte Maschine geht davon aus, dass sich volatileVariablen jederzeit …
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.