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.



19
Kann ich ein binäres Literal in C oder C ++ verwenden?
Ich muss mit einer Binärzahl arbeiten. Ich habe versucht zu schreiben: const x = 00010000; Aber es hat nicht funktioniert. Ich weiß, dass ich eine Hexadezimalzahl verwenden kann, die denselben Wert hat wie 00010000, aber ich möchte wissen, ob es in C ++ einen Typ für Binärzahlen gibt, und wenn …
190 c++  c  binary 

3
printf () Formatierung für hex
Dies ist eher eine merkwürdige als eine wichtige Frage. Warum wird beim Drucken von Hex als 8-stellige Zahl mit führenden Nullen %#08Xnicht das gleiche Ergebnis angezeigt wie 0x%08X? Wenn ich versuche, das erstere zu verwenden, wird das 08Formatierungsflag entfernt und es funktioniert nicht nur mit 8. Wieder war ich nur …
190 c  printf  hex 

11
Modulo-Betrieb mit negativen Zahlen
In einem C-Programm habe ich die folgenden Operationen versucht (nur um das Verhalten zu überprüfen) x = 5 % (-3); y = (-5) % (3); z = (-5) % (-3); printf("%d ,%d ,%d", x, y, z); gab mir Ausgabe wie (2, -2 , -2)in gcc. Ich hatte jedes Mal ein …
190 c  gcc  modulo 

6
Wie kommt es, dass die Adresse eines Arrays gleich dem Wert in C ist?
Im folgenden Codebit unterscheiden sich Zeigerwerte und Zeigeradressen wie erwartet. Array-Werte und Adressen jedoch nicht! Wie kann das sein? Ausgabe my_array = 0022FF00 &my_array = 0022FF00 pointer_to_array = 0022FF00 &pointer_to_array = 0022FEFC #include <stdio.h> int main() { char my_array[100] = "some cool string"; printf("my_array = %p\n", my_array); printf("&my_array = %p\n", …
189 c  pointers  arrays 


12
Leiten Sie einen Aufruf einer variadischen Funktion in C weiter
Ist es in C möglich, den Aufruf einer variadischen Funktion weiterzuleiten? Wie in, int my_printf(char *fmt, ...) { fprintf(stderr, "Calling printf with fmt %s", fmt); return SOMEHOW_INVOKE_LIBC_PRINTF; } Das Weiterleiten des Aufrufs auf die oben beschriebene Weise ist in diesem Fall offensichtlich nicht unbedingt erforderlich (da Sie Aufrufe auf andere …
188 c  variadic 

25
Aufrunden auf die nächste Potenz von 2
Ich möchte eine Funktion schreiben, die die nächste Potenz von 2 Zahlen zurückgibt. Wenn meine Eingabe beispielsweise 789 ist, sollte die Ausgabe 1024 sein. Gibt es eine Möglichkeit, dies zu erreichen, ohne Schleifen zu verwenden, sondern nur einige bitweise Operatoren zu verwenden?



3
fork () verzweigt mehr als erwartet?
Betrachten Sie den folgenden Code: #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { int i; for(i = 0; i < 2; i++) { fork(); printf("."); } return 0; } Dieses Programm gibt 8 Punkte aus. Wie kann das möglich sein? Sollte es nicht stattdessen 6 Punkte geben?
186 c++  c  fork 

9
Wo sucht gcc nach C- und C ++ - Headerdateien?
Wo sucht gcc auf einem Unix-System nach Header-Dateien? Ich habe heute Morgen ein wenig Zeit damit verbracht, nach System-Header-Dateien zu suchen, daher dachte ich, dies wären gute Informationen, die ich hier haben könnte.
185 c  gcc  header 

1
Wie werden GCC und g ++ gebootet?
Das nervt mich schon eine Weile. Wie kompilieren sich GCC und g ++? Ich vermute, dass jede Revision mit einer zuvor erstellten Revision kompiliert wird. Ist das wahr? Und wenn ja, bedeutet dies, dass die ältesten g ++ - und GCC-Versionen in Assembly geschrieben wurden?

3
Warum generiert GCC eine so radikal unterschiedliche Baugruppe für nahezu denselben C-Code?
Beim Schreiben einer optimierten ftolFunktion habe ich ein sehr merkwürdiges Verhalten festgestellt GCC 4.6.1. Lassen Sie mich Ihnen zuerst den Code zeigen (aus Gründen der Klarheit habe ich die Unterschiede markiert): fast_trunc_one, C: int fast_trunc_one(int i) { int mantissa, exponent, sign, r; mantissa = (i & 0x07fffff) | 0x800000; exponent …

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.