Ich weiß, dies ist erreichbar mit Boost wie pro: Aber ich möchte wirklich vermeiden, mit Boost. Ich habe gegoogelt und keine geeigneten oder lesbaren Beispiele gefunden. Grundsätzlich möchte ich den gleitenden Durchschnitt eines laufenden Stroms eines Gleitkommazahlstroms mit den letzten 1000 Zahlen als Datenprobe verfolgen. Was ist der einfachste Weg, um dies zu erreichen, experimentierte ich mit einem kreisförmigen Array, exponentiellen gleitenden Durchschnitt und einem einfacheren gleitenden Durchschnitt und festgestellt, dass die Ergebnisse aus dem kreisförmigen Array meine Bedürfnisse am besten geeignet. Wenn Ihre Bedürfnisse sind einfach, können Sie nur versuchen, mit einem exponentiellen gleitenden Durchschnitt. Setzen Sie einfach, Sie eine Akkumulator-Variable, und wie Ihr Code sieht auf jede Probe, aktualisiert der Code den Akkumulator mit dem neuen Wert. Sie wählen eine konstante Alpha, die zwischen 0 und 1 ist, und berechnen Sie: Sie müssen nur einen Wert von Alpha zu finden, wo die Wirkung einer gegebenen Probe nur für etwa 1000 Proben dauert. Hmm, Im nicht wirklich sicher, dass dies für Sie geeignet ist, jetzt, dass Ive es hier. Das Problem ist, dass 1000 ist ein ziemlich langes Fenster für einen exponentiellen gleitenden Durchschnitt Im nicht sicher, gibt es ein Alpha, die den Durchschnitt über die letzten 1000 Zahlen, ohne Unterlauf in der Gleitkomma Berechnung. Aber, wenn Sie einen kleineren Durchschnitt wünschen, wie 30 Zahlen oder so, dieses ist eine sehr einfache und schnelle Weise, es zu tun. Beantwortet Jun 12 12 at 4:44 1 auf Ihrem Beitrag. Der exponentielle gleitende Durchschnitt kann zulassen, dass das Alpha variabel ist. Somit kann dies dazu verwendet werden, Zeitbasisdurchschnitte (z. B. Bytes pro Sekunde) zu berechnen. Wenn die Zeit seit dem letzten Akkumulator-Update mehr als 1 Sekunde beträgt, lassen Sie Alpha 1.0 sein. Andernfalls können Sie Alpha zulassen (usecs seit letztem Update / 1000000). Ndash jxh Grundsätzlich möchte ich den gleitenden Durchschnitt eines laufenden Stroms eines Gleitkommazahls mit den neuesten 1000 Zahlen als Datenbeispiel zu verfolgen. Beachten Sie, dass im Folgenden die Summe als Elemente ergänzt / ersetzt wird, wodurch kostspielige O (N) - Transversionen vermieden werden, um die Summe zu berechnen, die für den durchschnittlichen Bedarf benötigt wird. Insgesamt wird ein anderer Parameter von T gebildet, um z. B. Mit einer langen langen, wenn insgesamt 1000 lange s, eine int für char s, oder eine doppelte bis total float s. Dies ist ein wenig fehlerhaft, dass Nennsignale an INTMAX vorbeiziehen könnten - wenn Sie darauf achten, dass Sie ein langes langes nicht signiertes verwenden konnten. Oder verwenden Sie ein zusätzliches Bool-Datenelement, um aufzuzeichnen, wenn der Container zuerst gefüllt wird, während numsamples rund um das Array (am besten dann umbenannt etwas harmlos wie pos). Man nehme an, daß der quadratische Operator (T-Abtastwert) tatsächlich quadratischer Operator (T-Abtastwert) ist. Ndash oPless Jun 8 14 um 11:52 Uhr oPless ahhh. Gut beobachtet. Eigentlich meinte ich, dass es sich um void operator () (T sample) handelt, aber natürlich könntet ihr auch irgendeine Notation verwenden, die ihr mochtet. Wird beheben, danke. Ndash Tony D Jun 8 14 um 14: 27C Programmierung / Variablen Wie die meisten Programmiersprachen ist C in der Lage, benannte Variablen und deren Inhalt zu verwenden und zu verarbeiten. Variablen sind einfach Namen, die verwendet werden, um auf einen Speicherort in einem Speicherort zu verweisen, der einen Wert enthält, mit dem wir arbeiten. Es kann helfen, an Variablen als Platzhalter für einen Wert zu denken. Sie können eine Variable als äquivalent zu ihrem zugewiesenen Wert denken. Wenn Sie also eine Variable i haben, die initialisiert (gleich gesetzt) auf 4 ist, dann folgt, dass i 1 gleich 5 ist. Da C eine relativ niedrige Programmiersprache ist, muss vor einem C-Programm Speicher zum Speichern einer Variablen verwendet werden, um den Speicher zu beanspruchen, der benötigt wird, um die Werte für eine Variable zu speichern. Dies geschieht durch Deklaration von Variablen. Deklarieren von Variablen ist die Art und Weise, wie ein C-Programm die Anzahl der benötigten Variablen anzeigt, was sie benannt werden sollen und wie viel Speicher sie benötigen. Innerhalb der Programmiersprache C, bei der Verwaltung und Bearbeitung von Variablen, ist es wichtig, den Typ der Variablen und die Größe dieser Typen zu kennen. Da C eine ziemlich niedrige Programmiersprache ist, können diese Aspekte seiner Arbeit hardware-spezifisch sein, dh, wie die Sprache gemacht wird, um an einem Maschinentyp zu arbeiten, kann anders sein, als er gemacht wird, um an einem anderen zu arbeiten. Alle Variablen in C werden eingegeben. Das heißt, jede Variable deklariert muss als eine bestimmte Art von Variablen zugewiesen werden. Deklarieren, Initialisieren und Zuweisen von Variablen Bearbeiten Hier ist ein Beispiel für die Deklaration einer Ganzzahl, die wir somenumber nennen. (Beachten Sie das Semikolon am Ende der Zeile, das ist, wie Ihr Compiler eine Programmanweisung von einem anderen trennt.) Diese Anweisung bedeutet, dass Sie einen Speicherplatz für eine Variable namens somenumber deklarieren, die zum Speichern von Daten verwendet wird. Beachten Sie, dass wir den Datentyp angeben müssen, den eine Variable speichert. Es gibt bestimmte Schlüsselwörter, um dies auch im nächsten Abschnitt zu sehen. Mehrere Variablen können mit einer Anweisung deklariert werden, etwa so: Wir können einer Variablen auch einige Inhalte gleichzeitig deklarieren und zuweisen. Dies wird Initialisierung genannt. In frühen Versionen von C mussten Variablen am Anfang eines Blocks deklariert werden. In C99 ist es erlaubt, Deklarationen und Anweisungen willkürlich zu mischen, aber dies ist nicht üblich, weil es selten notwendig ist, einige Compiler noch nicht unterstützen C99 (Portabilität), und es kann, weil es noch ungewöhnlich ist, irritieren Mitprogrammierer (Wartbarkeit) . Nach dem Deklarieren von Variablen können Sie eine Variable später mit einer Anweisung wie folgt vergeben: Sie können auch einer Variablen den Wert einer anderen Variablen zuordnen, zB so: Oder mehreren Variablen denselben Wert mit einer Anweisung zuordnen: Zuweisung xy gibt den Wert der Zuweisung zurück. X y z ist wirklich shorthand für x (y z). Benennen von Variablen Bearbeiten Die Variablennamen in C bestehen aus Buchstaben (Groß - und Kleinbuchstaben) und Ziffern. Das Unterstrichzeichen () ist ebenfalls erlaubt. Namen dürfen nicht mit einer Ziffer beginnen. Im Gegensatz zu einigen Sprachen (wie Perl und einigen BASIC-Dialekten) verwendet C keine speziellen Präfixzeichen auf Variablennamen. Einige Beispiele für gültige (aber nicht sehr beschreibende) C-Variablennamen: Einige Beispiele für ungültige C-Variablennamen: Wie das letzte Beispiel suggeriert, sind bestimmte Wörter als Schlüsselwörter in der Sprache reserviert und können nicht als Variablennamen verwendet werden. Darüber hinaus gibt es bestimmte Sätze von Namen, die, während nicht Sprache Schlüsselwörter, für einen oder anderen Grund reserviert sind. Beispielsweise kann ein C-Compiler bestimmte Namen hinter den Szenen verwenden, und dies kann zu Problemen für ein Programm führen, das versucht, sie zu verwenden. Außerdem sind einige Namen für die zukünftige Verwendung in der C-Standardbibliothek reserviert. Die Regeln für die Bestimmung, welche Namen reserviert sind (und in welchen Kontexten sie reserviert sind) sind zu kompliziert, um hier Zitat zu beschreiben. Und als Anfänger müssen Sie nicht über sie viel sowieso sorgen. Für jetzt, nur vermeiden, mit Namen, die mit einem Unterstrich Zeichen beginnen. Die Benennungsregeln für C-Variablen gelten auch für die Benennung von anderen Sprachkonstrukten wie Funktionsnamen, Struktur-Tags und Makros, die später behandelt werden. In einem Programm, in dem Sie einen Wert explizit angeben, anstatt auf eine Variable oder eine andere Form von Daten zu verweisen, wird dieser Wert als Literal bezeichnet. In dem obigen Initialisierungsbeispiel ist 3 ein Literal. Literale können entweder eine durch ihren Typ definierte Form (mehr dazu) oder eine hexadezimale (hex) Notation verwenden, um Daten direkt in eine Variable einzufügen, unabhängig von ihrem Typ. Hexadezimalzahlen werden immer mit 0x vorangestellt. Für jetzt, aber, sollten Sie wahrscheinlich nicht zu sehr mit hex betroffen. Die vier grundlegenden Datentypen Edit In Standard C gibt es vier grundlegende Datentypen. Sie sind int. Char Schwimmen. Und doppelt. Wir werden sie hier kurz beschreiben, dann gehen wir genauer in C-Programmierung / Typen vor. Der int-Typ Edit Der int-Typ speichert Ganzzahlen in Form ganzer Zahlen. Eine Ganzzahl ist typischerweise die Größe eines Maschinenworts, das auf den meisten modernen Heim-PCs 32 Bits (4 Bytes) beträgt. Beispiele für Literale sind ganze Zahlen (z. B. 1,2,3, 10, 100). Wenn int 32 Bits (4 Bytes) ist, kann er eine ganze Zahl (ganze Zahl) zwischen -2147483648 und 2147483647 speichern (Zahl) die Möglichkeit hat, eine Zahl aus 4294967296 Möglichkeiten (2 zur Macht von 32) zu repräsentieren. Wenn Sie eine neue int-Variable deklarieren möchten, verwenden Sie das Schlüsselwort int. Zum Beispiel: In dieser Deklaration deklarieren wir 3 Variablen, numberOfStudents, i und j, j wird hier das Literal 5 zugewiesen. Der char-Typ Edit Der char-Typ ist in der Lage, jedes Mitglied des Execution-Zeichensatzes zu halten. Es speichert die gleiche Art von Daten wie ein int (d. H. Ganze Zahlen), hat aber typischerweise eine Größe von einem Byte. Die Größe eines Bytes wird durch den Makro CHARBIT spezifiziert, der die Anzahl der Bits in einem char (Byte) angibt. Im Standard C kann es nie kleiner als 8 Bits sein. Eine Variable vom Typ char wird am häufigsten verwendet, um Zeichendaten und damit ihren Namen zu speichern. Die meisten Implementierungen verwenden den ASCII-Zeichensatz als Ausführungszeichensatz, aber sein bestes nicht zu wissen oder zu kümmern, es sei denn die tatsächlichen Werte sind wichtig. Beispiele für Zeichenliterale sind a, b, 1 usw. sowie einige Sonderzeichen wie 0 (das Nullzeichen) und n (newline, recall Hello, World). Beachten Sie, dass der char-Wert in einfache Anführungszeichen eingeschlossen werden muss. Wenn wir eine Zeichenvariable initialisieren, können wir dies auf zwei Arten tun. Einer wird bevorzugt, der andere Weg ist schlechte Programmierpraxis. Der erste Weg ist zu schreiben Dies ist eine gute Programmierung in der Praxis, dass es eine Person, die Ihren Code zu lesen, um zu verstehen, dass letter1 wird mit dem Buchstaben a initialisiert wird mit beginnen. Der zweite Weg, der nicht verwendet werden sollte, wenn Sie Buchstabencharaktere kodieren, ist zu schreiben Dies wird von einigen als extrem schlechte Praxis betrachtet, wenn wir es verwenden, um ein Zeichen, nicht eine kleine Zahl zu speichern, wenn jemand liest Ihr Code, die meisten Leser sind gezwungen, um zu sehen, was Zeichen mit der Nummer 97 im Codierungsschema entspricht. Schließlich behalten letter1 und letter2 beide den gleichen Buchstaben a, aber die erste Methode ist klarer, einfacher zu debuggen und viel einfacher. Eine wichtige Sache zu erwähnen ist, dass Zeichen für Ziffern anders als ihre entsprechende Zahl dargestellt sind, d. H. 1 ist nicht gleich 1. Kurz gesagt, jeder einzelne Eintrag, der in einfachen Anführungszeichen eingeschlossen ist. Es gibt eine weitere Art von Literal, die in Zusammenhang mit Zeichenfolgen erklärt werden muss: das String-Literal. Ein String ist eine Reihe von Zeichen, die normalerweise angezeigt werden sollen. Sie sind von doppelten Zitaten umgeben (nicht). Ein Beispiel für ein String-Literal ist das Hello, Worldn im Hello, World Beispiel. Das Zeichenfolgen-Literal wird einem Zeichenarray zugeordnet. Arrays werden später beschrieben. Beispiel: Der Float-Typ Edit float ist für Gleitkomma kurz. Es speichert auch reelle Zahlen, ist aber nur ein Maschinenwort groß. Daher wird es verwendet, wenn weniger Präzision als ein Doppel bietet erforderlich ist. Float-Literale sind mit F oder f zu suffi - zieren, sonst werden sie als doppelte interpretiert. Beispiele sind: 3.1415926f, 4.0f, 6.022e23f. Float-Variablen können mit dem float-Schlüsselwort deklariert werden. Der doppelte Typ Edit Die Doppel - und Float-Typen sind sehr ähnlich. Der Float-Typ ermöglicht es Ihnen, Gleitkommazahlen mit einfacher Genauigkeit zu speichern, während das Doppel-Schlüsselwort Doppel-Präzisions-Gleitkommazahlen reelle Zahlen speichern kann, also ganzzahlige und nicht-ganzzahlige Werte. Seine Größe ist in der Regel zwei Maschinen Worte, oder 8 Bytes auf den meisten Maschinen. Beispiele für Doppel-Literale sind 3.1415926535897932, 4.0, 6.022e23 (wissenschaftliche Notation). Wenn Sie 4 statt 4,0 verwenden, werden die 4 als int interpretiert. Der Unterschied zwischen Schwimmern und Doppelten wurde aufgrund der unterschiedlichen Größen der beiden Typen gemacht. Wenn C zuerst verwendet wurde, war der Platz auf einem Minimum und so die vernünftige Verwendung eines float anstelle von einem Doppelten gespeichert etwas Speicher. Heutzutage, mit Speicher mehr frei verfügbar, müssen Sie nicht wirklich brauchen, um Speicher wie diese zu konservieren, kann es besser sein, doppelte verwenden konsequent. Tatsächlich verwenden einige C-Implementierungen doppelte anstelle von floats, wenn Sie eine float-Variable deklarieren. Wenn Sie eine doppelte Variable verwenden möchten, verwenden Sie das doppelte Schlüsselwort. Wenn Sie irgendwelche Zweifel an der Menge an Speicher tatsächlich von einer beliebigen Variable verwendet haben (und dies gilt für Typen auch später diskutieren, auch), können Sie mit dem sizeof Operator, um sicher zu gehen. (Für die Vollständigkeit ist es wichtig zu erwähnen, dass sizeof ein unärer Operator ist, nicht eine Funktion.) Seine Syntax ist: Die beiden oben genannten Ausdrücke geben die Größe des angegebenen Objekts und Typs in Bytes zurück. Der Rückgabetyp ist sizet (definiert im Header ltstddef. hgt), der ein vorzeichenloser Wert ist. Heres eine Beispielnutzung: Größe wird auf 4 gesetzt, vorausgesetzt, CHARBIT ist definiert als 8, und eine Integer ist 32 Bits breit. Der Wert von sizeof s result ist die Anzahl der Bytes. Beachten Sie, dass wenn sizeof auf einen char angewendet wird. Ist das Ergebnis 1, das heißt: gibt immer 1 zurück. Datentypmodifikatoren Edit One kann die Datenspeicherung eines beliebigen Datentyps ändern, indem es mit bestimmten Modifizierern vorangeht. Long und short sind Modifikatoren, die es ermöglichen, dass ein Datentyp entweder mehr oder weniger Speicher verwendet. Das Schlüsselwort int muss nicht den kurzen und langen Keywords folgen. Dies ist am häufigsten der Fall. Ein Kurzschluss kann verwendet werden, wenn die Werte in einen kleineren Bereich fallen als die eines int. Typischerweise -32768 bis 32767. Ein long kann verwendet werden, um einen erweiterten Bereich von Werten zu enthalten. Es ist nicht garantiert, dass eine kurze nutzt weniger Speicher als eine int. Noch ist es garantiert, dass eine lange mehr Speicher als eine int aufnimmt. Es ist nur sichergestellt, dass sizeof (short) lt sizeof (int) lt sizeof (long). Typischerweise ist ein Kurzwert 2 Byte, ein Int ist 4 Byte und ein Langer entweder 4 oder 8 Bytes. Moderne C-Compiler bieten auch lange lange, die typischerweise ein 8-Byte-Integer ist. Bei allen oben beschriebenen Arten wird ein Bit verwendet, um das Vorzeichen (positiv oder negativ) eines Wertes anzuzeigen. Wenn Sie entscheiden, dass eine Variable niemals einen negativen Wert enthält, können Sie den nicht signierten Modifikator verwenden, um dieses eine Bit für die Speicherung anderer Daten zu verwenden, wodurch der Wertebereich effektiv verdoppelt wird, während die Eingabe positiv ist. Der unsignierte Spezifizierer kann auch ohne eine nachgestellte int verwendet werden. In diesem Fall ist die Größe standardmäßig die eines int. Es gibt auch einen signierten Modifikator, der das Gegenteil ist, aber es ist nicht notwendig, außer für bestimmte Verwendungen von char. Und selten verwendet, da alle Typen (außer char) standardmäßig signiert sind. Um einen Modifier zu verwenden, deklarieren Sie einfach eine Variable mit dem Datentyp und den entsprechenden Modifikatoren: Bei der Verwendung des const-Qualifikators muss die deklarierte Variable in der Deklaration initialisiert werden. Es ist dann nicht erlaubt, geändert zu werden. Während die Idee einer Variablen, die sich nie ändert, nicht sinnvoll erscheint, gibt es gute Gründe, const zu benutzen. Für eine Sache, viele Compiler können einige kleine Optimierungen auf Daten durchführen, wenn es weiß, dass die Daten nie ändern wird. Wenn Sie zum Beispiel den Wert in Ihren Berechnungen benötigen, können Sie eine const-Variable von pi deklarieren. So dass ein Programm oder eine andere Funktion, die von jemand anderem geschrieben wurde, nicht den Wert von pi ändern kann. Beachten Sie, dass ein standardkonformer Compiler eine Warnung ausgeben muss, wenn versucht wird, eine const-Variable zu ändern, aber danach kann der Compiler das const-Qualifikationsmerkmal ignorieren. Wenn Sie C-Programme schreiben, können Sie versucht werden, Code zu schreiben, der von bestimmten Zahlen abhängt. Zum Beispiel können Sie ein Programm für ein Lebensmittelgeschäft schreiben. Dieses komplexe Programm hat Tausende bis Tausende von Codezeilen. Der Programmierer beschließt, die Kosten einer Dose von Mais, derzeit 99 Cent, als ein Literal im gesamten Code darstellen. Nehmen wir jetzt an, die Kosten einer Dose Mais ändern sich auf 89 Cent. Der Programmierer muss jetzt gehen und manuell ändern jeden Eintrag von 99 Cent auf 89. Obwohl dies nicht so ein großes Problem, unter Berücksichtigung der globalen Find-Replace-Funktion vieler Text-Editoren, betrachten ein weiteres Problem: die Kosten für eine Dose grün Bohnen ist auch zunächst 99 Cent. Um den Preis zuverlässig ändern, müssen Sie bei jedem Vorkommen der Zahl 99 zu betrachten. C besitzt bestimmte Funktionalität, um dies zu vermeiden. Diese Funktionalität ist ungefähr gleichbedeutend, obwohl eine Methode in einem Fall nützlich sein kann, über eine andere. Verwenden des const-Schlüsselworts Edit Das const-Schlüsselwort hilft, magische Zahlen auszulöschen. Durch die Deklaration einer Variablen const corn am Anfang eines Blocks, kann ein Programmierer einfach ändern, dass const und nicht über die Einstellung der Wert anderswo Sorgen. Es gibt auch eine andere Methode zur Vermeidung von magischen Zahlen. Es ist viel flexibler als const. Und auch viel problematischer in vielerlei Hinsicht. Es beinhaltet auch den Präprozessor, im Gegensatz zum Compiler. Erblicken. Define Edit Wenn Sie Programme schreiben, können Sie das so genannte Makro erstellen. So dass, wenn der Computer den Code liest, wird es ersetzt alle Instanzen eines Wortes mit dem angegebenen Ausdruck. Heres ein Beispiel. Wenn Sie schreiben, wenn Sie zum Beispiel den Preis von Mais drucken möchten, verwenden Sie das Wort PRICEOFCORN statt der Zahl 0.99 der Präprozessor ersetzt alle Instanzen von PRICEOFCORN mit 0.99, die der Compiler als Literal-Doppel 0.99 interpretieren wird. Der Präprozessor führt eine Substitution durch, dh, PRICEOFCORN wird durch 0,99 ersetzt, so dass kein Semikolon erforderlich ist. Es ist wichtig zu beachten, dass definieren hat im Grunde die gleiche Funktionalität wie die find-and-replace-Funktion in einer Vielzahl von Text-Editoren / Textverarbeitungsprogramme. Für einige Zwecke kann definieren, schädlich verwendet werden, und es ist in der Regel bevorzugt, const verwenden, wenn definieren ist unnötig. Es ist möglich, zum Beispiel zu definieren. Sagen wir, ein Makro DOG als die Zahl 3, aber wenn Sie versuchen, das Makro zu drucken, denken, dass DOG eine Zeichenfolge, die Sie auf dem Bildschirm zeigen kann, wird das Programm einen Fehler haben. Definieren auch keine Rücksicht auf Typ. Es ignoriert die Struktur Ihres Programms, ersetzt den Text überall (in der Tat, ohne Bereich), die unter bestimmten Umständen vorteilhaft sein könnte, kann aber die Quelle für problematische Fehler sein. Im Folgenden sehen Sie weitere Beispiele der Definitionsrichtlinie. Es ist eine gute Konvention zu schreiben definieren d Wörter in allen Hauptstädten, so ein Programmierer wissen, dass dies nicht eine Variable, die Sie deklariert haben, sondern ein definieren d Makro. Es ist nicht notwendig, eine Präprozessor-Direktive zu beenden, wie zB mit einem Semikolon definieren, einige Compiler können Sie über unnötige Token in Ihrem Code zu warnen, wenn Sie tun. Im Abschnitt "Grundkonzepte" wurde das Konzept des Bereichs eingeführt. Es ist wichtig, die Unterscheidung zwischen lokalen Typen und globalen Typen zu wiederholen und Variablen von jedem zu deklarieren. Um eine lokale Variable zu deklarieren, platzieren Sie die Deklaration am Anfang (d. H. Vor allen nicht deklarativen Anweisungen) des Blocks, zu dem die Variable lokal sein soll. Um eine globale Variable zu deklarieren, deklarieren Sie die Variable außerhalb eines Blocks. Wenn eine Variable global ist, kann sie von überall in Ihrem Programm gelesen und geschrieben werden. Globale Variablen gelten nicht als gute Programmierpraxis und sollten nach Möglichkeit vermieden werden. Sie hemmen Code-Lesbarkeit, erstellen Namenskonflikte, Abfall-Speicher, und kann schwer zu-Trace-Bugs. Übermäßiger Gebrauch von globals ist normalerweise ein Zeichen der Faulheit oder des schlechten Entwurfs. Allerdings, wenn es eine Situation, wo lokale Variablen können mehr stumpfen und unlesbaren Code erstellen, theres keine Schande bei der Verwendung von globals. Inklusive hier, zur Vollständigkeit, sind mehr der Modifikatoren, die Standard-C bietet. Für den Anfang Programmierer, statisch und extern kann nützlich sein. Flüchtig ist mehr von Interesse für fortgeschrittene Programmierer. Register und Auto sind weitgehend veraltet und sind in der Regel nicht von Interesse für entweder Anfang oder fortgeschrittene Programmierer. Static Edit static ist manchmal ein nützliches Schlüsselwort. Es ist ein häufiger Irrtum, dass der einzige Zweck ist, einen variablen Aufenthalt im Gedächtnis zu machen. Wenn Sie eine Funktion oder globale Variable als statisch deklarieren, wird sie intern. Sie können nicht auf die Funktion oder die Variable über das externe Schlüsselwort (siehe unten) aus anderen Dateien in Ihrem Projekt zugreifen. Wenn Sie eine lokale Variable als statisch deklarieren. Wird es genau wie jede andere Variable erstellt. Wenn die Variable jedoch außerhalb des Gültigkeitsbereichs liegt (d. h. der Block, den sie lokal beendet hat) bleibt die Variable im Speicher, wobei ihr Wert beibehalten wird. Die Variable bleibt solange gespeichert, bis das Programm endet. Obwohl dieses Verhalten dem von globalen Variablen ähnelt, befolgen statische Variablen immer noch Bereichsregeln und können daher außerhalb ihres Bereichs nicht zugegriffen werden. Variablen, die als statisch deklariert sind, werden standardmäßig auf Null (oder für Zeiger, NULL 1 2) initialisiert. Sie können explizit auf Deklaration auf einen beliebigen konstanten Wert initialisiert werden. Die Initialisierung erfolgt nur einmal, zur Kompilierzeit. Sie können statisch in (mindestens) zwei verschiedene Möglichkeiten verwenden. Betrachten Sie diesen Code und stellen Sie sich vor, er befindet sich in einer Datei namens jfile. c: Der j var ist sowohl von oben als auch von unten zugänglich und behält seinen Wert bei. Die k vars behalten auch ihren Wert, aber sie sind zwei verschiedene Variablen, eine in jedem ihrer Bereiche. Statische Vars sind ein guter Weg, um Kapselung zu implementieren, ein Begriff aus der objektorientierten Denkweise, die effektiv bedeutet, dass keine Änderungen an einer Variablen vorgenommen werden können, außer durch Funktionsaufrufe. Das Ausführen des obigen Programms erzeugt die folgende Ausgabe: Eigenschaften von statischen Variablen: extern Edit extern wird verwendet, wenn eine Datei auf eine Variable in einer anderen Datei zugreifen muss, die sie d nicht direkt enthalten darf. Aus diesem Grund führt extern nicht wirklich Platz für eine neue Variable aus, sondern bietet dem Compiler genügend Informationen, um auf die entfernte Variable zuzugreifen. Funktionen der externen Variablen: volatile Edit volatile ist ein spezieller Modifikator, der den Compiler darüber informiert, dass der Wert der Variablen von externen Entitäten, die nicht das Programm selbst sind, geändert werden kann. Dies ist notwendig für bestimmte Programme, die mit Optimierungen kompiliert wurden, wenn eine Variable nicht flüchtig definiert wurde, dann kann der Compiler davon ausgehen, dass bestimmte Operationen, die die Variable beinhalten, sicher zu optimieren, wenn in Wirklichkeit sie arent sind. Flüchtig ist besonders relevant bei der Arbeit mit eingebetteten Systemen (wo ein Programm nicht die vollständige Kontrolle über eine Variable haben kann) und Multi-Threaded-Anwendungen. Auto ist ein Modifikator, der eine automatische Variable angibt, die automatisch erzeugt wird, wenn sie im Gültigkeitsbereich liegt und wenn sie außerhalb des Gültigkeitsbereichs ist. Wenn Sie denken, dass dieses klingt, wie ziemlich viel, was Sie alle entlang taten, wenn Sie eine Variable erklären, youre Recht: alle deklarierten Einzelteile innerhalb eines Blockes sind implizit automatisch. Aus diesem Grund ist das Auto-Keyword eher wie die Antwort auf eine Trivia-Frage als ein nützlicher Modifikator, und es gibt viele sehr kompetente Programmierer, die sich ihrer Existenz nicht bewusst sind. Funktionen der automatischen Variablen: Register Edit Register ist ein Hinweis auf den Compiler zu versuchen, die Speicherung der gegebenen Variable zu optimieren, indem sie in einem Register der Computer-CPU, wenn das Programm ausgeführt wird. Die meisten Optimierungs-Compiler tun dies trotzdem, so dass die Verwendung dieses Keyword ist oft unnötig. In der Tat, ANSI C, dass ein Compiler kann dieses Keyword ignorieren, wenn es so wünscht und viele tun. Microsoft Visual C ist ein Beispiel für eine Implementierung, die das Registrierungsschlüsselwort vollständig ignoriert. Funktionen der Registervariablen: Konzepte Bearbeiten In diesem Abschnitt EditCategory: C Im Folgenden sind alle Tasks auf dem Rosetta-Code aufgelistet, die mit C gelöst wurden. Ihre Hilfe benötigt Wenn Sie C kennen. Schreiben Sie bitte Code für einige der Aufgaben, die nicht in C implementiert werden. C ist eine allgemeine, prozedurale. Imperative Computer-Programmiersprache entwickelt 1972 von Dennis Ritchie in den Bell Telephone Laboratories für die Verwendung mit dem UNIX-Betriebssystem. C entwickelte sich von seinem Vorgänger, B. C hat sich seitdem auf viele andere Plattformen ausgebreitet. Und ist heute eine der am weitesten verbreiteten Programmiersprachen. C hat auch viele andere populäre Sprachen wie C und Objective-C stark beeinflusst. Die ursprünglich als Erweiterungen für C. entworfen wurden. Die Leute sind so vertraut mit ihrer Syntax, dass viele andere Sprachen wie AWK. PHP. Java. JavaScript D. und C bewusst verwendet sein Aussehen und fühlen. C ist die am häufigsten verwendete Programmiersprache für das Schreiben von System-Software, obwohl es auch weit verbreitet für das Schreiben von Anwendungen verwendet wird. C ist die lingua franca der Open Source Community. Versionen bearbeiten KampR C war die erste weit verbreitete Form von C. Es war ursprünglich in der C-Programmiersprache dokumentiert. Veröffentlicht im Jahr 1978. Es ist für die Autoren, Brian Kernighan und Dennis Ritchie (auch die Sprachen Schöpfer) benannt. Code in dieser Stil ist praktisch nicht vorhanden heute. C89 (häufig als ANSI C bezeichnet) ist die Version von C, die von ANSI im Jahre 1989 standardisiert wurde. Es ist die am häufigsten verwendete und unterstützte Version der Sprache. C90 (oft als ISO C bezeichnet) ist identisch mit C89, das 1990 von ISO veröffentlicht wurde. C99 ist eine signifikante Verbesserung, die viele Funktionen von C anwendet und gemeinsame Compiler-Erweiterungen standardisiert. Es wurde von ISO im Jahr 1999 und von ANSI im Jahr 2000 standardisiert. Es wird hauptsächlich von kommerziellen C-Compilern unterstützt, aber die meisten Funktionen sind in Clang GCC verfügbar. 1 C11 ist die aktuelle Norm, veröffentlicht im Dezember 2011. Es ist die Voreinstellung für GCC ab Version 5.1. Citation Diese Kategorie hat die folgenden 3 Unterkategorien, von insgesamt 3.
Choppiness Index Würden wir nicht alle lieben, zuverlässig zu wissen, wann ein Vorrat beginnt, zu tendieren, und wenn es im flachen Gebiet ist Ein Indikator, der irgendwie erklären würde, daß Sie die Hauptfälschungen und shakeouts ignorieren und nur auf dem Umzug konzentrieren, der den Choppiness Index zählt Ist ein Richtungsindikator, der entworfen ist, um zu bestimmen, ob der Markt choppy ist (Handel seitwärts) oder nicht choppy (Handel innerhalb eines Trends in beide Richtungen). Es ist ein Oszillationsindikator zwischen -50 (sehr trendy) und 50 (sehr choppy). Es gibt viele Strategien für den Handel mit dem Choppiness Indicator: 1. Kauf oder Verkauf der Breakout Rebounding von extremen Choppiness-Index-Werte Wenn CI bewegt sich unter 11,8 (choppy to trendy) nach dem Rebound von einem hohen CI-Wert, dies kann zeigen, bevorstehende Trend. Suchen Sie nach Bestätigung der Richtung im Preis Für eine konservativere Handel, warten, bis die CI bewegt sich über 0 (im Screenshot angezeigt) 2....
Comments
Post a Comment