Als «c» getaggte Fragen

C ist eine universelle Programmiersprache, die für die Systemprogrammierung (Betriebssystem und eingebettet), Bibliotheken, Spiele und plattformübergreifende Programme verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899 definiert (die neueste Version, 9899: 2018, sofern nicht anders angegeben - auch tagversionsspezifische Anforderungen mit c89, c99, c11 usw. kennzeichnen). C unterscheidet sich von C ++ und sollte ohne einen rationalen Grund nicht mit dem C ++ - Tag kombiniert werden.

3
Inkrementieren von 'maskierten' Bitsets
Ich bin gerade dabei, einen Baum-Enumerator zu schreiben, bei dem ich auf folgendes Problem gestoßen bin: Ich betrachte maskierte Bitsets, dh Bitsets, bei denen die gesetzten Bits eine Teilmenge einer Maske sind, dh 0000101mit Maske 1010101. Was ich erreichen möchte, ist das Inkrementieren des Bitsets, jedoch nur in Bezug auf …

3
Warum sollte Code aktiv versuchen, die Tail-Call-Optimierung zu verhindern?
Der Titel der Frage mag etwas seltsam sein, aber die Sache ist, dass meines Wissens nichts gegen die Optimierung von Tail Calls spricht. Beim Durchsuchen von Open Source-Projekten bin ich jedoch bereits auf einige Funktionen gestoßen, die aktiv versuchen, den Compiler daran zu hindern, eine Tail-Call-Optimierung durchzuführen, beispielsweise die Implementierung …

1
Python: Warum sind * und ** schneller als / und sqrt ()?
Bei der Optimierung meines Codes wurde Folgendes festgestellt: >>> from timeit import Timer as T >>> T(lambda : 1234567890 / 4.0).repeat() [0.22256922721862793, 0.20560789108276367, 0.20530295372009277] >>> from __future__ import division >>> T(lambda : 1234567890 / 4).repeat() [0.14969301223754883, 0.14155197143554688, 0.14141488075256348] >>> T(lambda : 1234567890 * 0.25).repeat() [0.13619112968444824, 0.1281130313873291, 0.12830305099487305] und auch: >>> …



10
String Padding in C.
Ich habe diese Funktion geschrieben, die StringPadRight ("Hallo", 10, "0") -> "Hallo00000" ausführen soll. char *StringPadRight(char *string, int padded_len, char *pad) { int len = (int) strlen(string); if (len >= padded_len) { return string; } int i; for (i = 0; i < padded_len - len; i++) { strcat(string, pad); …
80 c  string  padding 

7
Gibt es in C „Designmuster“? [geschlossen]
Diese Frage passt derzeit nicht zu unserem Q & A-Format. Wir erwarten, dass die Antworten durch Fakten, Referenzen oder Fachwissen gestützt werden, aber diese Frage wird wahrscheinlich zu Debatten, Argumenten, Umfragen oder erweiterten Diskussionen führen. Wenn Sie der Meinung sind, dass diese Frage verbessert und möglicherweise erneut geöffnet werden kann, …

3
Warum funktioniert das GCC-Pad mit NOPs?
Ich habe eine kurze Zeit mit C gearbeitet und vor kurzem angefangen, mich mit ASM zu beschäftigen. Wenn ich ein Programm kompiliere: int main(void) { int a = 0; a += 1; return 0; } Die objdump-Demontage hat den Code, aber nops nach dem ret: ... 08048394 <main>: 8048394: 55 …
80 c  gcc  assembly 


4
Ist es garantiert sicher, memcpy (0,0,0) auszuführen?
Ich bin nicht so gut mit dem C-Standard vertraut, bitte nehmen Sie Kontakt mit mir auf. Ich würde gerne wissen, ob es standardmäßig garantiert ist, dass memcpy(0,0,0)es sicher ist. Die einzige Einschränkung, die ich finden konnte, ist, dass das Verhalten undefiniert ist, wenn sich die Speicherbereiche überlappen ... Aber können …

7
Malloc für Struktur und Zeiger in C.
Angenommen, ich möchte eine Struktur definieren, die die Länge des Vektors und seine Werte wie folgt darstellt: struct Vector{ double* x; int n; }; Angenommen, ich möchte einen Vektor y definieren und Speicher dafür zuweisen. struct Vector *y = (struct Vector*)malloc(sizeof(struct Vector)); Meine Suche über das Internet zeigt, dass ich …

6
#ifdef in #define
Ich versuche so etwas zu schreiben: #define COV_ON(x) \ #ifdef COVERAGE_TOOL \ _Pragma (COVERAGE #x) #endif Gibt es eine Möglichkeit, dies zu definieren COV_ON? Ich weiß, was ich oben getan habe, ist falsch, da ich nicht #ifdefin #define haben kann. ( #ist kein zulässiges Zeichen in #define). Gibt es also …
80 c  c-preprocessor 

4
Ist C deutlich schneller als C ++ [geschlossen]
Diese Frage passt derzeit nicht zu unserem Q & A-Format. Wir erwarten, dass die Antworten durch Fakten, Referenzen oder Fachwissen gestützt werden, aber diese Frage wird wahrscheinlich zu Debatten, Argumenten, Umfragen oder erweiterten Diskussionen führen. Wenn Sie der Meinung sind, dass diese Frage verbessert und möglicherweise erneut geöffnet werden kann, …
80 c++  c  performance 

9
Ist es möglich, eine Zeichenfolge in C zu ändern?
Ich habe einige Stunden lang mit allen möglichen C-Tutorials und Büchern zu Zeigern zu kämpfen, aber ich möchte wirklich wissen, ob es möglich ist, einen Zeichenzeiger nach seiner Erstellung zu ändern. Folgendes habe ich versucht: char *a = "This is a string"; char *b = "new string"; a[2] = b[1]; …
80 c  string  debugging 

9
Ist der Operator + so in C implementiert?
Wenn das Verständnis , wie primitive Operatoren wie +, -, *und /sind in C implementiert, fand ich die folgenden Ausschnitt aus einer interessanten Antwort . // replaces the + operator int add(int x, int y) { while(x) { int t = (x & y) <<1; y ^= x; x = …

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.