Als «language-lawyer» getaggte Fragen

Bei Fragen zu den Feinheiten formaler oder maßgeblicher Spezifikationen von Programmiersprachen und -umgebungen.




3
std :: vector (ab) verwendet die automatische Speicherung
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 …


3
C ++ - Dekltyp und Klammern - warum?
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: …

6
Was ist der richtige Weg, um 2 Bytes in eine vorzeichenbehaftete 16-Bit-Ganzzahl umzuwandeln?
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) - …

2
Warum erlaubt die BNF-Grammatik von C Deklarationen mit einer leeren Folge von Init-Deklaratoren?
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, …

2
Warum ist std :: hash nicht garantiert deterministisch?
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 . - …




3
Ist es in Ordnung, den Wert des Standardarguments als const-Referenz zurückzugeben?
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 = …

1
Was ist die Semantik überlappender Objekte in C?
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? …


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.