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.

2
Was bedeutet die Konstante 0,0039215689?
Ich sehe diese Konstante immer wieder in verschiedenen Grafik-Header-Dateien 0.0039215689 Es scheint vielleicht etwas mit Farbe zu tun zu haben? Hier ist der erste Treffer bei Google : void RDP_G_SETFOGCOLOR(void) { Gfx.FogColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.FogColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f; Gfx.FogColor.B = _SHIFTR(w1, 8, 8) …


11
Was ist der Unterschied zwischen NULL, '\ 0' und 0?
In C scheint es Unterschiede zwischen verschiedenen Werten von Null zu geben - NULL , NULund 0. Ich weiß, dass das ASCII-Zeichen zu '0'ausgewertet wird48 oder0x30 . Der NULLZeiger ist normalerweise definiert als: #define NULL 0 Oder #define NULL (void *)0 Hinzu kommt der NULCharakter'\0' der ebenfalls zu bewerten scheint …
309 c  pointers  null 

8
Warum erzeugt rand () + rand () negative Zahlen?
Ich habe festgestellt, dass rand()Bibliotheksfunktionen, wenn sie nur einmal innerhalb einer Schleife aufgerufen werden, fast immer positive Zahlen erzeugen. for (i = 0; i < 100; i++) { printf("%d\n", rand()); } Wenn ich jedoch zwei rand()Anrufe hinzufüge , haben die generierten Nummern jetzt mehr negative Nummern. for (i = 0; …
304 c  random 



5
Bits mit einer einzigen Multiplikation extrahieren
Ich habe eine interessante Technik gesehen, die bei der Beantwortung einer anderen Frage verwendet wurde , und möchte sie etwas besser verstehen. Wir erhalten eine vorzeichenlose 64-Bit-Ganzzahl und interessieren uns für die folgenden Bits: 1.......2.......3.......4.......5.......6.......7.......8....... Insbesondere möchten wir sie wie folgt auf die ersten acht Positionen verschieben: 12345678........................................................ Der Wert …

3
Warum funktioniert NaN - NaN == 0.0 mit dem Intel C ++ - Compiler?
Es ist bekannt, dass sich NaNs in der Arithmetik ausbreiten, aber ich konnte keine Demonstrationen finden, deshalb schrieb ich einen kleinen Test: #include <limits> #include <cstdio> int main(int argc, char* argv[]) { float qNaN = std::numeric_limits<float>::quiet_NaN(); float neg = -qNaN; float sub1 = 6.0f - qNaN; float sub2 = qNaN …
300 c++  c  floating-point  ieee-754  icc 


14
MIN und MAX in C.
Wo sind MINund MAXin C definiert, wenn überhaupt? Was ist der beste Weg, um diese so allgemein und sicher wie möglich zu implementieren? (Compiler-Erweiterungen / Builtins für Mainstream-Compiler werden bevorzugt.)
300 c  max  min  c-preprocessor 

4
Zeichengröße ('a') in C / C ++
Wie groß ist das Zeichen in C und C ++? Soweit ich weiß, beträgt die Größe von char sowohl in C als auch in C ++ 1 Byte. In C: #include <stdio.h> int main() { printf("Size of char : %d\n", sizeof(char)); return 0; } In C ++: #include <iostream> int …
298 c++  c  types 

9
Zeiger in C: Wann wird das kaufmännische Und und das Sternchen verwendet?
Ich fange gerade mit Zeigern an und bin etwas verwirrt. Ich weiß, &bedeutet die Adresse einer Variablen, *die vor einer Zeigervariablen verwendet werden kann, um den Wert des Objekts zu erhalten, auf das der Zeiger zeigt. Aber die Dinge funktionieren anders, wenn Sie mit Arrays, Strings arbeiten oder wenn Sie …
298 c  pointers 

6
So drucken Sie einen int64_t-Typ in C.
Der C99-Standard hat ganzzahlige Typen mit einer Bytegröße wie int64_t. Ich verwende den folgenden Code: #include <stdio.h> #include <stdint.h> int64_t my_int = 999999999999999999; printf("This is my_int: %I64d\n", my_int); und ich bekomme diese Compiler-Warnung: warning: format ‘%I64d’ expects type ‘int’, but argument 2 has type ‘int64_t’ Ich habe versucht mit: printf("This …
298 c  stdint 

26
Verstrichene Zeit einfach messen
Ich versuche, time () zu verwenden, um verschiedene Punkte meines Programms zu messen. Was ich nicht verstehe ist, warum die Werte im Vorher und Nachher gleich sind? Ich verstehe, dass dies nicht der beste Weg ist, mein Programm zu profilieren. Ich möchte nur sehen, wie lange etwas dauert. printf("**MyProgram::before time= …
297 c++  c  linux  time  measurement 

3
Was ist der >>> = Operator in C?
Von einem Kollegen als Puzzle gegeben, kann ich nicht herausfinden, wie dieses C-Programm tatsächlich kompiliert und ausgeführt wird. Was ist dieser >>>=Operator und das seltsame 1P1Literal? Ich habe in Clang und GCC getestet. Es gibt keine Warnungen und die Ausgabe ist "???" #include <stdio.h> int main() { int a[2]={ 10, …

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.