Als «language-lawyer» getaggte Fragen

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

6
Wird `new` in` new int;` als Operator betrachtet?
Der Ausdruck new int;wie in int * x = new int;ist ein neuer Ausdruck . Der Begriff "neuer Operator" scheint synonym mit "neuer Ausdruck" verwendet zu werden, zum Beispiel in dieser Frage: Unterschied zwischen "neuer Operator" und "neuer Operator"? Ist es richtig zu sagen, dass das Schlüsselwort, newwie es in …


1
Warum ist 019 kein JavaScript-Syntaxfehler? Oder warum ist 019> 020
Wenn ich 019 > 020die JavaScript-Konsole eingebe (sowohl in Chrome als auch in Firefox getestet), erhalte ich die Antwort true. Dies ist darauf zurückzuführen, 020dass es als OctalIntegerLiteral(gleich 16) 019interpretiert wird, während es anscheinend als DecimalLiteral(und gleich 19) interpretiert wird . Da 19ist größer als 16, 019 > 020ist true. …




10
Wie groß ist die Leere?
Was würde diese Aussage bringen? void *p = malloc(sizeof(void)); Bearbeiten: Eine Erweiterung der Frage. Wenn sizeof (void) im GCC-Compiler 1 ergibt, wird 1 Byte Speicher zugewiesen und der Zeiger p zeigt auf dieses Byte und würde p ++ auf 0x2346 erhöht werden? Angenommen, p war 0x2345. Ich spreche von p …



1
Typ von "dies" in der statischen Elementfunktion?
In C ++ 5.1.1 / 3 [expr.prim.general] heißt es: Der Typ und die Wertekategorie [von this] werden innerhalb einer statischen Elementfunktion definiert. Was bedeutet das? Wie ist es relevant? Beachten Sie, dass: this darf nicht in der Deklaration einer statischen Elementfunktion erscheinen


10
Warum sollte das Verhalten von std :: memcpy für Objekte, die nicht TriviallyCopyable sind, undefiniert sein?
Von http://en.cppreference.com/w/cpp/string/byte/memcpy : Wenn die Objekte nicht TriviallyCopyable sind (z. B. Skalare, Arrays, C-kompatible Strukturen), ist das Verhalten undefiniert. Bei meiner Arbeit haben wir std::memcpylange Zeit Objekte, die nicht TriviallyCopyable sind, bitweise ausgetauscht, indem wir : void swapMemory(Entity* ePtr1, Entity* ePtr2) { static const int size = sizeof(Entity); char swapBuffer[size]; …

5
Ist die Maskierung vor der vorzeichenlosen Linksverschiebung in C / C ++ zu paranoid?
Diese Frage wird von mir motiviert, kryptografische Algorithmen (z. B. SHA-1) in C / C ++ zu implementieren, tragbaren plattformunabhängigen Code zu schreiben und undefiniertes Verhalten gründlich zu vermeiden . Angenommen, ein standardisierter Krypto-Algorithmus fordert Sie auf, Folgendes zu implementieren: b = (a << 31) & 0xFFFFFFFF wo aund bsind …


2
Warum muss ich in C ++ 20 nicht "Typname" vor einem abhängigen Typ angeben?
Dieses Codebit wurde in C ++ 20 (mit gcc 10.1) kompiliert, ohne das typenameSchlüsselwort vor dem abhängigen Typ zu verwenden std::vector<T>::iterator. Warum kompiliert es? #include <vector> template<typename T> std::vector<T>::iterator // Why does this not require "typename" before it? f() { return {}; } int main() { auto fptr = &f<int>; …

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.