EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

bc - Online in der Cloud

Führen Sie bc im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl bc, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


bc - Eine beliebige Genauigkeitsrechnersprache

SYNTAX


bc [ -hlwsqv ] [lange Optionen] [ Datei ... ]

BESCHREIBUNG


bc ist eine Sprache, die Zahlen mit beliebiger Genauigkeit mit interaktiver Ausführung von . unterstützt
Aussagen. Es gibt einige Ähnlichkeiten in der Syntax mit der Programmiersprache C. EIN
Standard-Mathematikbibliothek ist über die Befehlszeilenoption verfügbar. Auf Wunsch die Mathebibliothek
wird vor der Verarbeitung von Dateien definiert. bc beginnt mit der Verarbeitung von Code aus allen Dateien
in der Befehlszeile in der angegebenen Reihenfolge aufgelistet. Nachdem alle Dateien verarbeitet wurden, bc
liest von der Standardeingabe. Der gesamte Code wird ausgeführt, während er gelesen wird. (Wenn eine Datei a . enthält
Befehl zum Anhalten des Prozessors, bc wird nie von der Standardeingabe lesen.)

Diese Version von bc enthält mehrere Erweiterungen über das traditionelle hinaus bc Implementierungen und
dem POSIX-Standardentwurf. Befehlszeilenoptionen können dazu führen, dass diese Erweiterungen a
Abmahnung oder Ablehnung. Dieses Dokument beschreibt die von diesem akzeptierte Sprache
Prozessor. Erweiterungen werden als solche gekennzeichnet.

OPTIONAL
-h, --Hilfe
Drucken Sie die Verwendung und beenden Sie.

-i, --interaktiv
Interaktiven Modus erzwingen.

-l, --mathlib
Definieren Sie die mathematische Standardbibliothek.

-w, --warnen
Warnungen vor Erweiterungen von POSIX ausgeben bc.

-s, --standard
Verarbeiten Sie genau die POSIX bc Sprache.

-q, --leise
Drucken Sie nicht das normale GNU bc-Willkommen.

-v, --version
Drucken Sie die Versionsnummer und das Copyright aus und beenden Sie das Programm.

NUMMERN
Das grundlegendste Element in bc ist die Nummer. Zahlen sind Zahlen mit beliebiger Genauigkeit.
Diese Genauigkeit liegt sowohl im ganzzahligen Teil als auch im Bruchteil vor. Alle Zahlen sind
intern in Dezimal dargestellt und alle Berechnungen erfolgen in Dezimal. (Diese Version
schneidet Ergebnisse von Divisions- und Multiplikationsoperationen ab.) Es gibt zwei Attribute von
Zahlen, Länge und Maßstab. Die Länge ist die Gesamtzahl der signifikanten Dezimalstellen
Ziffern einer Zahl und die Skala ist die Gesamtzahl der Dezimalstellen nach dem Komma
Punkt. Zum Beispiel:
.000001 hat eine Länge von 6 und eine Skala von 6.
1935.000 hat eine Länge von 7 und einen Maßstab von 3.

VARIABLEN
Zahlen werden in zwei Arten von Variablen gespeichert, einfache Variablen und Arrays. Beides einfach
Variablen und Array-Variablen werden benannt. Namen beginnen mit einem Buchstaben gefolgt von einer beliebigen Zahl
aus Buchstaben, Ziffern und Unterstrichen. Alle Buchstaben müssen Kleinbuchstaben sein. (Vollständig alphanumerisch
Namen sind eine Erweiterung. In POSIX bc alle Namen sind ein einzelner Kleinbuchstabe.) Der Typ
der Variablen ist durch den Kontext klar, da auf alle Array-Variablennamen ein folgt
Klammern ([]).

Es gibt vier spezielle Variablen, Rahmen, iBase, obszön, und letzte. Treppe definiert, wie manche
Operationen verwenden Ziffern nach dem Komma. Der Standardwert von Treppe ist 0. ibase
und Chef Definieren Sie die Umrechnungsbasis für Eingabe- und Ausgabezahlen. Die Standardeinstellung für beide
Ein- und Ausgang ist Basis 10. letzte (eine Erweiterung) ist eine Variable mit dem Wert der
zuletzt gedruckte Nummer. Diese werden ggf. näher besprochen. Alle
Diesen Variablen können sowohl Werte zugewiesen als auch in Ausdrücken verwendet werden.

IHRE NACHRICHT
Kommentare in bc beginne mit den zeichen /* und enden mit den Charakteren */. Kommentare Mai
beginnen Sie an einer beliebigen Stelle und erscheinen als einzelnes Leerzeichen in der Eingabe. (Dies führt dazu, dass Kommentare zu
andere Eingabeelemente abgrenzen. Zum Beispiel kann ein Kommentar nicht mitten in einem gefunden werden
Variablenname.) Kommentare enthalten alle Zeilenumbrüche (Zeilenende) zwischen Anfang und Ende
des Kommentars.

Zur Unterstützung der Verwendung von Skripten für bc, ein einzeiliger Kommentar wurde als ein . hinzugefügt
Verlängerung. Ein einzeiliger Kommentar beginnt mit a # Charakter und geht weiter bis zum nächsten Ende von
die Linie. Das Zeilenendezeichen ist nicht Bestandteil des Kommentars und wird normal verarbeitet.

AUSDRÜCKE
Die Zahlen werden durch Ausdrücke und Anweisungen manipuliert. Da die Sprache war
Interaktiv gestaltet, werden Anweisungen und Ausdrücke so schnell wie möglich ausgeführt.
Es gibt kein "Hauptprogramm". Stattdessen wird Code ausgeführt, sobald er angetroffen wird. (Funktionen,
später im Detail besprochen, werden definiert, wenn sie angetroffen werden.)

Ein einfacher Ausdruck ist nur eine Konstante. bc wandelt Konstanten in interne Dezimalzahlen um
Zahlen mit der aktuellen Eingabebasis, angegeben durch die Variable ibase. (Es gibt eine
Ausnahme in Funktionen.) Die gesetzlichen Werte von ibase sind 2 bis 16. Wert zuweisen
außerhalb dieses Bereichs zu ibase ergibt einen Wert von 2 oder 16. Die eingegebenen Zahlen können enthalten
die Zeichen 0–9 und A–F. (Hinweis: Sie müssen Großbuchstaben sein. Kleinbuchstaben sind variabel
Namen.) Einstellige Zahlen haben immer den Wert der Ziffer, unabhängig vom Wert
of ibase. (dh A = 10.) Bei mehrstelligen Zahlen bc ändert alle Eingabeziffern größer oder
gleich ibase dem Wert von ibase-1. Das macht die Zahl FFF sei immer die größte 3
Ziffernnummer der Eingangsbasis.

Vollständige Ausdrücke ähneln vielen anderen höheren Sprachen. Da es nur einen gibt
Art von Zahl, es gibt keine Regeln für das Mischen von Typen. Stattdessen gibt es Regeln für die
Skala der Ausdrücke. Jeder Ausdruck hat eine Skala. Dies ergibt sich aus der Skala von
Originalzahlen, die durchgeführte Operation und in vielen Fällen der Wert der Variablen
Treppe. Zulässige Werte der Variablen Treppe sind 0 bis zur maximalen Zahl, die durch ein C . dargestellt werden kann
ganze Zahl.

In den folgenden Beschreibungen von legalen Ausdrücken bezieht sich "expr" auf einen vollständigen Ausdruck
und "var" bezieht sich auf eine einfache oder eine Array-Variable. Eine einfache Variable ist einfach a
Name
und eine Array-Variable wird angegeben als
Name[ausdr]
Sofern nicht anders angegeben, ist die Skala des Ergebnisses die maximale Skala der
Ausdrücke beteiligt.

- expr Das Ergebnis ist die Negation des Ausdrucks.

++ var Die Variable wird um eins erhöht und der neue Wert ist das Ergebnis der
Ausdruck.

-- var Die Variable wird um eins dekrementiert und der neue Wert ist das Ergebnis der
Ausdruck.

war ++
Das Ergebnis des Ausdrucks ist der Wert der Variablen und dann ist die Variable
um eins erhöht.

var -- Das Ergebnis des Ausdrucks ist der Wert der Variablen und dann ist die Variable
um eins dekrementiert.

Ausdruck + Ausdruck
Das Ergebnis des Ausdrucks ist die Summe der beiden Ausdrücke.

ausdruck - ausdruck
Das Ergebnis des Ausdrucks ist die Differenz der beiden Ausdrücke.

ausdruck * ausdruck
Das Ergebnis des Ausdrucks ist das Produkt der beiden Ausdrücke.

ausdruck / ausdruck
Das Ergebnis des Ausdrucks ist der Quotient der beiden Ausdrücke. Der Maßstab von
das Ergebnis ist der Wert der Variablen Treppe.

Ausdruck % Ausdruck
Das Ergebnis des Ausdrucks ist der "Rest" und wird im Folgenden berechnet
Weg. Um a%b zu berechnen, wird zuerst a/b berechnet zu Treppe Ziffern. Dieses Ergebnis wird verwendet
a-(a/b)*b auf der Skala des Maximums von berechnen Treppe+Skala(b) und Skala(a).
If Treppe auf Null gesetzt ist und beide Ausdrücke ganze Zahlen sind dieser Ausdruck ist der
ganzzahlige Restfunktion.

ausdruck ^ ausdruck
Das Ergebnis des Ausdrucks ist der Wert des ersten auf den zweiten erhöht. Die
Der zweite Ausdruck muss eine ganze Zahl sein. (Wenn der zweite Ausdruck keine ganze Zahl ist,
eine Warnung wird generiert und der Ausdruck wird abgeschnitten, um einen ganzzahligen Wert zu erhalten.)
Die Skala des Ergebnisses ist Treppe wenn der Exponent negativ ist. Wenn der Exponent ist
positiv die Skala des Ergebnisses ist das Minimum der Skala des ersten
Ausdruck mal dem Wert des Exponenten und dem Maximum von Treppe und die skala
des ersten Ausdrucks. (zB scale(a^b) = min(scale(a)*b, max( Rahmen,
scale(a))).) Es ist zu beachten, dass expr^0 immer den Wert 1 zurückgibt.

(ausdruck)
Dadurch wird die Standardpriorität geändert, um die Auswertung des Ausdrucks zu erzwingen.

var = ausdruck
Der Variablen wird der Wert des Ausdrucks zugewiesen.

var = Ausdruck
Dies ist äquivalent zu "var = var expr" mit Ausnahme des "var"-Teils
wird nur einmal ausgewertet. Dies kann einen Unterschied machen, wenn "var" ein Array ist.

Relationale Ausdrücke sind eine besondere Art von Ausdrücken, die immer 0 oder 1 ergeben, 0
wenn die Beziehung falsch ist und 1, wenn die Beziehung wahr ist. Diese können in jeder Rechtsform erscheinen
Ausdruck. (POSIX bc erfordert, dass relationale Ausdrücke nur in if, while,
und für Aussagen und dass in ihnen nur ein relationaler Test durchgeführt werden darf.) Der relationale
Betreiber sind

Ausdruck1 < Ausdruck2
Das Ergebnis ist 1, wenn expr1 strikt kleiner als expr2 ist.

Ausdruck1 <= Ausdruck2
Das Ergebnis ist 1, wenn ausdr1 kleiner oder gleich ausdr2 ist.

Ausdruck1 > Ausdruck2
Das Ergebnis ist 1, wenn expr1 strikt größer als expr2 ist.

ausdr1 >= ausdr2
Das Ergebnis ist 1, wenn ausdr1 größer oder gleich ausdr2 ist.

ausdr1 == ausdr2
Das Ergebnis ist 1, wenn ausdr1 gleich ausdr2 ist.

ausdr1 != ausdr2
Das Ergebnis ist 1, wenn expr1 ungleich expr2 ist.

Boolesche Operationen sind ebenfalls legal. (POSIX bc hat KEINE booleschen Operationen). Die
Ergebnis aller booleschen Operationen sind 0 und 1 (für falsch und wahr) wie in relational
Ausdrücke. Die booleschen Operatoren sind:

!expr Das Ergebnis ist 1, wenn expr 0 ist.

Ausdruck && Ausdruck
Das Ergebnis ist 1, wenn beide Ausdrücke ungleich Null sind.

Ausdruck || ausdruck
Das Ergebnis ist 1, wenn einer der Ausdrücke nicht Null ist.

Die Ausdruckspriorität ist wie folgt: (vom niedrigsten zum höchsten)
|| Operator, linksassoziativ
&&-Operator, linksassoziativ
! Operator, nicht assoziativ
Relationale Operatoren, linksassoziativ
Zuweisungsoperator, rechtsassoziativ
+ und - Operatoren, linksassoziativ
*, / und %-Operatoren, linksassoziativ
^ Operator, rechtsassoziativ
unär - Operator, nicht assoziativ
++ und -- Operatoren, nicht assoziativ

Diese Priorität wurde gewählt, damit POSIX-konform bc Programme werden korrekt ausgeführt. Dies
führt dazu, dass die Verwendung der relationalen und logischen Operatoren ein ungewöhnliches Verhalten aufweist
bei Verwendung mit Zuweisungsausdrücken. Betrachten Sie den Ausdruck:
a = 3 < 5

Die meisten C-Programmierer würden annehmen, dass dies das Ergebnis von "3 < 5" (der Wert 1) zu
die Variable "a". Was macht das in bc weist der Variablen "a" den Wert 3 zu und dann
vergleichen Sie 3 mit 5. Am besten verwenden Sie Klammern, wenn Sie relationale und logische Operatoren verwenden
mit den Zuweisungsoperatoren.

Es gibt noch ein paar speziellere Ausdrücke, die in bereitgestellt werden bc. Diese haben zu tun mit
benutzerdefinierte Funktionen und Standardfunktionen. Sie alle erscheinen als "Name(Parameter)".
Siehe den Abschnitt über Funktionen für benutzerdefinierte Funktionen. Die Standardfunktionen sind:

Länge (Ausdruck)
Der Wert der Längenfunktion ist die Anzahl der signifikanten Stellen im
Ausdruck.

lesen ( )
Die Lesefunktion (eine Erweiterung) liest eine Zahl aus der Standardeingabe,
unabhängig davon, wo die Funktion auftritt. Achtung, dies kann zu Problemen mit dem
Vermischung von Daten und Programm in der Standardeingabe. Die beste Verwendung für diese Funktion
befindet sich in einem zuvor geschriebenen Programm, das eine Eingabe vom Benutzer erfordert, aber niemals zulässt
vom Benutzer einzugebenden Programmcode. Der Wert der Lesefunktion ist der
aus der Standardeingabe gelesene Zahl mit dem aktuellen Wert der Variablen ibase
für die Konversionsbasis.

Maßstab (Ausdruck)
Der Wert der Skalenfunktion ist die Anzahl der Nachkommastellen in
der Ausdruck.

sqrt (Ausdruck)
Der Wert der sqrt-Funktion ist die Quadratwurzel des Ausdrucks. Wenn die
Ausdruck negativ ist, wird ein Laufzeitfehler generiert.

ABSCHLUSS
Anweisungen (wie in den meisten algebraischen Sprachen) liefern die Reihenfolge der Ausdrücke
Auswertung. In bc Anweisungen werden "so schnell wie möglich" ausgeführt. Die Ausführung erfolgt, wenn
ein Zeilenumbruch in aufgetreten und es gibt eine oder mehrere vollständige Anweisungen. Deswegen
sofortige Ausführung, Zeilenumbrüche sind sehr wichtig in bc. Tatsächlich sind sowohl ein Semikolon als auch ein a
Newline werden als Anweisungstrennzeichen verwendet. Ein falsch platzierter Zeilenumbruch verursacht a
Syntax-Fehler. Da Zeilenumbrüche Anweisungstrennzeichen sind, ist es möglich, einen Zeilenumbruch auszublenden
durch Verwendung des Backslash-Zeichens. Der Ablauf "\ ", wo ist der Zeilenumbruch erscheint
zu bc als Leerzeichen anstelle eines Zeilenumbruchs. Eine Aussageliste ist eine Reihe von Aussagen
durch Semikolon und Zeilenumbruch getrennt. Das Folgende ist eine Liste von bc Aussagen und was
sie tun: (In Klammern ([]) eingeschlossene Dinge sind optionale Teile der Anweisung.)

Ausdruck
Diese Aussage bewirkt eines von zwei Dingen. Wenn der Ausdruck mit "
...", gilt es als Zuweisungssatz. Wenn die
Ausdruck ist keine Zuweisungsanweisung, der Ausdruck wird ausgewertet und ausgegeben
zum Ausgang. Nachdem die Nummer gedruckt wurde, wird ein Zeilenumbruch gedruckt. Zum Beispiel,
"a=1" ist eine Zuweisungsanweisung und "(a=1)" ist ein Ausdruck mit eingebettetem
Abtretung. Alle gedruckten Zahlen werden in der Basis gedruckt, die von der
Variable Chef. Die gesetzlichen Werte für Chef sind 2 bis BC_BASE_MAX. (Siehe die
Abschnitt GRENZEN.) Für die Basen 2 bis 16 ist die übliche Methode zum Schreiben von Zahlen
Gebraucht. Für Basen größer als 16, bc verwendet eine mehrstellige Ziffernmethode von
Drucken der Zahlen, wobei jede Ziffer mit höherer Basis als Zahl zur Basis 10 gedruckt wird.
Die mehrstelligen Ziffern werden durch Leerzeichen getrennt. Jede Ziffer enthält die Zahl
von Zeichen, die erforderlich sind, um den Basis-Ten-Wert von "obase-1" darzustellen. Da Zahlen
sind von beliebiger Genauigkeit, einige Zahlen können möglicherweise nicht auf einer einzigen Ausgabe gedruckt werden
Leitung. Diese langen Zahlen werden auf Zeilen aufgeteilt, wobei das "\" als letztes verwendet wird
Zeichen in einer Zeile. Die maximale Anzahl gedruckter Zeichen pro Zeile beträgt 70. Fällig
zur interaktiven Natur von bc, das Drucken einer Zahl verursacht den Nebeneffekt von
den gedruckten Wert der Sondervariablen zuordnen letzte. Dadurch kann der Benutzer
Stellen Sie den zuletzt gedruckten Wert wieder her, ohne den gedruckten Ausdruck erneut eingeben zu müssen
die Nummer. Zuordnen zu letzte ist legal und überschreibt den zuletzt gedruckten Wert
mit dem zugewiesenen Wert. Der neu zugewiesene Wert bleibt bis zum nächsten
Nummer wird gedruckt oder ein anderer Wert zugewiesen letzte. (Einige Installationen können
erlauben die Verwendung eines einzelnen Punktes (.), der nicht Teil einer Zahl ist, als kurze Hand
Notation für für letzte.)

string Der String wird in die Ausgabe ausgegeben. Strings beginnen mit einem doppelten Anführungszeichen
und enthalten alle Zeichen bis zum nächsten doppelten Anführungszeichen. Alle Charaktere
sind wörtlich zu nehmen, einschließlich jeglicher Zeilenumbrüche. Danach wird kein Zeilenumbruchzeichen gedruckt
die Saite.

drucken Liste
Die print-Anweisung (eine Erweiterung) bietet eine weitere Ausgabemethode. Die Liste"
ist eine durch Kommas getrennte Liste von Strings und Ausdrücken. Jede Saite oder
Ausdruck wird in der Reihenfolge der Liste gedruckt. Es wird kein abschließender Zeilenumbruch gedruckt.
Ausdrücke werden ausgewertet und ihr Wert wird gedruckt und der Variablen zugewiesen
letzte. Strings in der print-Anweisung werden in der Ausgabe ausgegeben und können Folgendes enthalten:
spezielle Charaktere. Sonderzeichen beginnen mit dem umgekehrten Schrägstrich (\).
Die von erkannten Sonderzeichen bc sind "a" (Alarm oder Glocke), "b" (Rücktaste),
"f" (Seitenvorschub), "n" (Neuzeile), "r" (Wagenrücklauf), "q" (doppelte Anführungszeichen), "t"
(Tabulator) und "\" (Backslash). Jedes andere Zeichen nach dem Backslash ist
ignoriert.

{ Anweisungsliste }
Dies ist die zusammengesetzte Aussage. Es ermöglicht die Gruppierung mehrerer Anweisungen
zusammen zur Ausführung.

if ( Ausdruck ) Aussage1 [sonst Aussage2]
Die if-Anweisung wertet den Ausdruck aus und führt Anweisung1 oder Anweisung2 aus
abhängig vom Wert des Ausdrucks. Wenn der Ausdruck nicht Null ist,
Anweisung1 wird ausgeführt. Wenn Anweisung2 vorhanden ist und der Wert des Ausdrucks
0 ist, wird Anweisung2 ausgeführt. (Die else-Klausel ist eine Erweiterung.)

während ( Ausdruck ) Aussage
Die while-Anweisung führt die Anweisung aus, während der Ausdruck ungleich Null ist.
Es wertet den Ausdruck vor jeder Ausführung der Anweisung aus. Beendigung
der Schleife wird durch einen Null-Ausdruckswert oder die Ausführung eines Breaks verursacht
Aussage.

für ( [Ausdruck1] ; [Ausdruck2] ; [Ausdruck3] ) Aussage
Die for-Anweisung steuert die wiederholte Ausführung der Anweisung. Ausdruck1 ist
vor der Schleife ausgewertet. Ausdruck2 wird vor jeder Ausführung von ausgewertet
Stellungnahme. Bei einem Wert ungleich Null wird die Anweisung ausgewertet. Wenn es null ist, ist die Schleife
ist beendet. Nach jeder Ausführung der Anweisung wird expression3 ausgewertet
vor der Neubewertung von expression2. Wenn ausdruck1 oder ausdruck3 fehlen,
nichts wird an dem Punkt bewertet, an dem sie bewertet werden würden. Wenn Ausdruck2 ist
fehlt, entspricht dies dem Ersetzen des Werts 1 für expression2. (Die Wahl
Ausdrücke sind eine Erweiterung. POSIX bc erfordert alle drei Ausdrücke.) Die
Folgendes ist äquivalenter Code für die for-Anweisung:
Ausdruck1;
while (Ausdruck2) {
Stellungnahme;
Ausdruck3;
}

brechen Diese Anweisung bewirkt ein erzwungenes Beenden der letzten einschließenden while-Anweisung oder
zur Aussage.

fortsetzen
Die continue-Anweisung (eine Erweiterung) bewirkt, dass die letzte Einschließung für
-Anweisung, um die nächste Iteration zu starten.

Lahmheit Die halt-Anweisung (eine Erweiterung) ist eine ausgeführte Anweisung, die den bc
Prozessor wird nur beendet, wenn er ausgeführt wird. Zum Beispiel "wenn (0 == 1) halt" wird
nicht verursachen bc zu beenden, weil der Halt nicht ausgeführt wird.

Rückkehr Gibt den Wert 0 von einer Funktion zurück. (Siehe Abschnitt über Funktionen.)

Rückkehr ( Ausdruck )
Gibt den Wert des Ausdrucks aus einer Funktion zurück. (Siehe den Abschnitt über
Funktionen.) Als Erweiterung werden die Klammern nicht benötigt.

NICK ABSCHLUSS
Diese Aussagen sind keine Aussagen im herkömmlichen Sinne. Sie werden nicht hingerichtet
Aussagen. Ihre Funktion wird zur "Compile"-Zeit ausgeführt.

Grenzen Drucken Sie die lokalen Grenzwerte aus, die von der lokalen Version von erzwungen werden bc. Dies ist eine Erweiterung.

verlassen Wenn die quit-Anweisung gelesen wird, wird die bc Prozessor wird beendet, unabhängig von
wo die quit-Anweisung zu finden ist. Zum Beispiel führt "if (0 == 1) quit" dazu, dass bc
zu beenden.

Garantie
Drucken Sie einen längeren Garantiehinweis. Dies ist eine Erweiterung.

FUNKTIONEN
Funktionen bieten ein Verfahren zum Definieren einer Berechnung, die später ausgeführt werden kann.
Funktionen in bc Berechnen Sie immer einen Wert und geben Sie ihn an den Aufrufer zurück. Funktionsdefinitionen
sind "dynamisch" in dem Sinne, dass eine Funktion undefiniert ist, bis eine Definition gefunden wird
im Eingang. Diese Definition wird dann verwendet, bis eine andere Definitionsfunktion für dasselbe
Name angetroffen wird. Die neue Definition ersetzt dann die ältere Definition. Eine Funktion
ist wie folgt definiert:
definieren Name ( Parameter ) { Neue Zeile
auto_liste Anweisungsliste }
Ein Funktionsaufruf ist nur ein Ausdruck der Form "Name(Parameter)".

Parameter sind Zahlen oder Arrays (eine Erweiterung). In der Funktionsdefinition null oder mehr
Parameter werden definiert, indem ihre Namen durch Kommas getrennt aufgelistet werden. Alle Parameter sind
Aufruf von Wertparametern. Arrays werden in der Parameterdefinition durch die
Notation"Name[]". Im Funktionsaufruf sind Aktualparameter vollständige Ausdrücke für
Nummer Parameter. Für die Übergabe von Arrays wird dieselbe Notation verwendet wie für die Definition von Array
Parameter. Das benannte Array wird als Wert an die Funktion übergeben. Da Funktion
Definitionen sind dynamisch, Parameternummern und Typen werden geprüft, wenn eine Funktion
namens. Jede Nichtübereinstimmung in Anzahl oder Typen von Parametern führt zu einem Laufzeitfehler. EIN
Laufzeitfehler wird auch beim Aufruf einer undefinierten Funktion auftreten.

Das auto_liste ist eine optionale Liste von Variablen, die für den "lokalen" Gebrauch bestimmt sind. Die Syntax von
die Autoliste (falls vorhanden) ist "Auto Name, ... ;". (Das Semikolon ist optional.) Jeder Name
ist der Name einer Auto-Variablen. Arrays können mit der gleichen Notation wie . angegeben werden
in Parametern verwendet. Die Werte dieser Variablen werden zu Beginn von auf einen Stack gelegt
die Funktion. Die Variablen werden dann auf Null initialisiert und im gesamten verwendet
Ausführung der Funktion. Beim Beenden der Funktion werden diese Variablen gepoppt, damit die
Originalwert (zum Zeitpunkt des Funktionsaufrufs) dieser Variablen werden wiederhergestellt. Die
Parameter sind wirklich Auto-Variablen, die auf einen Wert initialisiert werden, der in der
Funktionsaufruf. Auto-Variablen unterscheiden sich von herkömmlichen lokalen Variablen, denn wenn
Funktion A ruft Funktion B auf, B kann auf die Auto-Variablen von Funktion A zugreifen, indem sie einfach die
gleichen Namen, es sei denn, Funktion B hat sie als Auto-Variablen bezeichnet. Aufgrund der Tatsache, dass auto
Variablen und Parameter werden auf einen Stack geschoben, bc unterstützt rekursive Funktionen.

Der Funktionsrumpf ist eine Liste von bc Aussagen. Auch hier werden die Aussagen durch getrennt
Semikolons oder Zeilenumbrüche. Return-Anweisungen bewirken die Beendigung einer Funktion und die
Rückgabe eines Wertes. Es gibt zwei Versionen der return-Anweisung. Das erste Formular,
"Rückkehr", gibt den Wert 0 an den aufrufenden Ausdruck zurück. Die zweite Form, "Rückkehr (
Ausdruck )", berechnet den Wert des Ausdrucks und gibt diesen Wert an den Aufrufer zurück
Ausdruck. Es gibt eine implizierte "Rückkehr (0)" am Ende jeder Funktion. Dies ermöglicht a
Funktion zum Beenden und Zurückgeben von 0 ohne eine explizite return-Anweisung.

Funktionen ändern auch die Verwendung der Variablen ibase. Alle Konstanten im Funktionskörper
wird mit dem Wert von umgerechnet ibase zum Zeitpunkt des Funktionsaufrufs. Änderungen von
ibase wird bei der Ausführung der Funktion außer dem Standard ignoriert
Funktion lesen, die immer den aktuellen Wert von verwendet ibase zum Umrechnen von Zahlen.

Den Funktionen wurden mehrere Erweiterungen hinzugefügt. Erstens hat das Format der Definition
etwas entspannt gewesen. Der Standard verlangt, dass sich die öffnende Klammer auf derselben Linie befindet wie die
definieren Schlüsselwort und alle anderen Teile müssen in den folgenden Zeilen stehen. Diese Version von bc werden wir
Erlaube beliebig viele Zeilenumbrüche vor und nach der öffnenden Klammer der Funktion. Zum
Beispielsweise sind die folgenden Definitionen legal.
definiere d (n) { zurück (2*n); }
definiere d(n)
{ zurück (2*n); }

Funktionen können definiert werden als ungültig. Eine void-Funktion gibt keinen Wert zurück und kann daher nicht sein
an jedem Ort verwendet, der einen Wert benötigt. Eine void-Funktion erzeugt keine Ausgabe, wenn
selbst auf einer Eingabezeile aufgerufen. Das Schlüsselwort ungültig steht zwischen dem Schlüsselwort
definieren und den Funktionsnamen. Betrachten Sie beispielsweise die folgende Sitzung.
define py (y) { print "--->", y, "<---", "\n"; }
definiere void px (x) { print "--->", x, "<---", "\n"; }
py(1)
--->1<---
0
px(1)
--->1<---
Da py ist keine void-Funktion, der Aufruf von py(1) druckt die gewünschte Ausgabe und dann
gibt eine zweite Zeile mit dem Wert der Funktion aus. Da der Wert einer Funktion
das keine explizite return-Anweisung gegeben ist null ist, wird die null ausgegeben. Zum px(1),
es wird keine Null ausgegeben, da die Funktion eine void-Funktion ist.

Außerdem wurde der Aufruf nach Variable für Arrays hinzugefügt. Um einen Aufruf per Variablenarray zu deklarieren,
Die Deklaration des Array-Parameters in der Funktionsdefinition sieht wie folgt aus:*Name[]". Das
Der Aufruf der Funktion bleibt derselbe wie der Aufruf von Wert-Arrays.

MATHE BIBLIOTHEK
If bc wird mit dem aufgerufen -l Option ist eine mathematische Bibliothek vorinstalliert und die Standardskalierung ist
auf 20 gesetzt. Die mathematischen Funktionen berechnen ihre Ergebnisse mit der zu diesem Zeitpunkt eingestellten Skala
ihres Rufes. Die Mathematikbibliothek definiert die folgenden Funktionen:

s (x) Der Sinus von x, x ist im Bogenmaß.

c (x) Der Kosinus von x, x ist im Bogenmaß.

ein (x) Der Arkustangens von x, Arkustangens gibt Bogenmaß zurück.

l (x) Der natürliche Logarithmus von x.

e (x) Die Exponentialfunktion der Erhöhung von e auf den Wert x.

J (n,x)
Die Bessel-Funktion ganzzahliger Ordnung n von x.

Beispiele:
In / Bin / sh, wird der Shell-Variablen der Wert von "pi" zugewiesen pi.
pi=$(echo "scale=10; 4*a(1)" | bc -l)

Das Folgende ist die Definition der Exponentialfunktion, die in der Mathematikbibliothek verwendet wird.
Diese Funktion ist in POSIX geschrieben bc.
Skala = 20

/* Nutzt die Tatsache, dass e^x = (e^(x/2))^2
Wenn x klein genug ist, verwenden wir die Reihe:
e^x = 1 + x + x^2/2! + x^3/3! + ...
*/

definiere e(x) {
automatisch a, d, e, f, i, m, v, z

/* Prüfe das Vorzeichen von x. */
wenn (x<0) {
m = 1
x = -x
}

/* Voraussetzung x. */
z = Maßstab;
Skala = 4 + z + 44*x;
während (x > 1) {
f + = 1;
x/= 2;
}

/* Initialisieren der Variablen. */
v = 1+x
a = x
d = 1

für (i=2; 1; i++) {
e = (a *= x) / (d *= ich)
wenn (e == 0) {
wenn (f>0) während (f--) v = v*v;
Maßstab = z
wenn (m) zurück (1/v);
zurück (v/1);
}
v += e
}
}

Der folgende Code verwendet die erweiterten Funktionen von bc ein einfaches Programm implementieren
zur Berechnung von Scheckbuchsalden. Dieses Programm wird am besten in einer Datei aufbewahrt, damit es
viele Male verwendet, ohne es bei jeder Verwendung neu eingeben zu müssen.
Skala = 2
drucke "\nBuchprogramm prüfen!\n"
print " Denken Sie daran, Einzahlungen sind negative Transaktionen.\n"
print " Verlassen durch eine 0-Transaktion.\n\n"

print "Anfangsbilanz?"; bal = lesen()
bal /= 1
drucke "\n"
während (1) {
"aktueller Saldo = "; bal
"Transaktion?"; trans = lesen ()
if (trans == 0) Pause;
bal -= trans
bal /= 1
}
verlassen

Das Folgende ist die Definition der rekursiven Fakultätsfunktion.
definiere f (x) {
wenn (x <= 1) zurück (1);
zurück (f(x-1) * x);
}

ZEILE LESEN UND LIBEDIT OPTIONAL
GNU bc kann (über eine Konfigurationsoption) kompiliert werden, um das GNU zu verwenden readline Eingabeeditor
Bibliothek oder BSD libedit Bücherei. Dies ermöglicht dem Benutzer die Bearbeitung von Zeilen vor
schicke sie an bc. Es ermöglicht auch eine Historie der vorherigen getippten Zeilen. Wenn das
Option ausgewählt ist, bc hat noch eine spezielle Variable. Diese besondere Variable, Geschichte is
die Anzahl der erhaltenen Geschichtszeilen. Zum readline, ein Wert von -1 bedeutet, dass an
eine unbegrenzte Anzahl von Verlaufszeilen wird beibehalten. Einstellen des Wertes von Geschichte zum
positive Zahl beschränkt die Anzahl der Historienzeilen auf die angegebene Zahl. Der Wert von 0
deaktiviert die Verlaufsfunktion. Der Standardwert ist 100. Weitere Informationen finden Sie im
Benutzerhandbücher für das GNU readline, Geschichte und BSD libedit Bibliotheken. Kann man nicht aktivieren
beide readline und libedit möglichst in einem Ansatz.

UNTERSCHIEDE
Diese Version von bc wurde aus dem POSIX P1003.2/D11-Entwurf implementiert und enthält mehrere
Unterschiede und Erweiterungen gegenüber dem Entwurf und den traditionellen Implementierungen. es ist
nicht auf herkömmliche Weise implementiert mit dc(1). Diese Version ist ein einzelner Prozess
die eine Bytecode-Übersetzung des Programms analysiert und ausführt. Es gibt eine "undokumentierte"
Option (-c), die das Programm veranlasst, den Bytecode stattdessen auf der Standardausgabe auszugeben
davon laufen zu lassen. Es wurde hauptsächlich zum Debuggen des Parsers und zur Vorbereitung der Mathematik verwendet
Bibliothek.

Eine Hauptursache für Unterschiede sind Erweiterungen, bei denen eine Funktion erweitert wird, um mehr hinzuzufügen
Funktionalität und Ergänzungen, wo neue Funktionen hinzugefügt werden. Das Folgende ist die Liste von
Unterschiede und Erweiterungen.

LANG-Umgebung
Diese Version entspricht nicht dem POSIX-Standard bei der Verarbeitung der LANG
Umgebungsvariable und alle Umgebungsvariablen, die mit LC_ beginnen.

Namen Traditional und POSIX bc haben einzelne Buchstabennamen für Funktionen, Variablen und
Arrays. Sie wurden zu mehrstelligen Namen erweitert, die mit a . beginnen
Buchstaben und kann Buchstaben, Zahlen und den Unterstrich enthalten.

Streicher
Strings dürfen keine NUL-Zeichen enthalten. POSIX sagt, dass alle Charaktere müssen
in Strings enthalten sein.

letzte POSIX bc hat keine letzte Variable. Einige Implementierungen von bc nutze den Zeitraum
(.) auf eine ähnliche Art und Weise.

Vergleiche
POSIX bc erlaubt Vergleiche nur in der if-Anweisung, der while-Anweisung und der
zweiter Ausdruck der for-Anweisung. Außerdem ist nur eine relationale Operation
in jeder dieser Aussagen erlaubt.

if-Anweisung, else-Klausel
POSIX bc hat keine else-Klausel.

zur Aussage
POSIX bc erfordert, dass alle Ausdrücke in der for-Anweisung vorhanden sind.

&&, ||, !
POSIX bc hat nicht die logischen Operatoren.

Lesefunktion
POSIX bc hat keine Lesefunktion.

Anweisung drucken
POSIX bc hat keine print-Anweisung.

Aussage fortsetzen
POSIX bc hat keine Continue-Anweisung.

return-Anweisung
POSIX bc erfordert Klammern um den Rückgabeausdruck.

Array-Parameter
POSIX bc unterstützt (derzeit) nicht vollständig Array-Parameter. Die POSIX-Grammatik
lässt Arrays in Funktionsdefinitionen zu, stellt jedoch keine Methode zum Angeben bereit
ein Array als Aktualparameter. (Dies ist höchstwahrscheinlich ein Versehen im
Grammatik.) Traditionelle Implementierungen von bc haben nur Call by Value Array
Parameter.

Funktionsformat
POSIX bc erfordert die öffnende Klammer in derselben Zeile wie die definieren Stichwort und die
Auto Aussage in der nächsten Zeile.

=+, =-, =*, =/, =%, =^
POSIX bc erfordert nicht, dass diese Zuweisungsoperatoren des "alten Stils" definiert werden.
Diese Version kann diese Zuweisungen des "alten Stils" zulassen. Verwenden Sie die Grenzwerte-Anweisung, um
Überprüfen Sie, ob die installierte Version sie unterstützt. Wenn es den "alten Stil" unterstützt
Zuweisungsoperatoren wird die Anweisung "a =- 1" dekrementiert a um 1 statt
Einstellung a auf den Wert -1.

Leerzeichen in Zahlen
Andere Implementierungen von bc Leerzeichen in Zahlen zulassen. Zum Beispiel würde "x=1 3"
Weisen Sie der Variablen x den Wert 13 zu. Dieselbe Anweisung würde eine Syntax verursachen
Fehler in dieser Version von bc.

Fehler und Ausführung
Diese Implementierung unterscheidet sich in Bezug auf den Code von anderen Implementierungen
ausgeführt, wenn Syntax- und andere Fehler im Programm gefunden werden. Bei einem Syntaxfehler
in einer Funktionsdefinition gefunden wird, versucht die Fehlerwiederherstellung den Anfang von a zu finden
-Anweisung und fahren Sie mit dem Parsen der Funktion fort. Sobald ein Syntaxfehler in der
Funktion, ist die Funktion nicht aufrufbar und wird undefiniert. Syntaxfehler
im interaktiven Ausführungscode macht den aktuellen Ausführungsblock ungültig. Die
Ausführungsblock wird durch ein Zeilenende beendet, das nach einem vollständigen
Folge von Aussagen. Zum Beispiel,
a = 1
b = 2
hat zwei Ausführungsblöcke und
{ a = 1
b = 2 }
hat einen Ausführungsblock. Jeder Laufzeitfehler beendet die Ausführung des aktuellen
Ausführungsblock. Eine Laufzeitwarnung beendet den aktuellen Ausführungsblock nicht.

Unterbricht
Während einer interaktiven Sitzung wird das SIGINT-Signal (normalerweise vom Kontroll-
C-Zeichen vom Terminal) bewirkt die Ausführung des aktuellen Ausführungsblocks
unterbrochen werden. Es wird ein "Laufzeit"-Fehler angezeigt, der angibt, welche Funktion verwendet wurde
unterbrochen. Nachdem alle Laufzeitstrukturen bereinigt wurden, erscheint eine Meldung
gedruckt, um den Benutzer zu informieren, dass bc ist bereit für weitere Eingaben. Alle zuvor definierten
Funktionen bleiben definiert und der Wert aller Nicht-Auto-Variablen ist der Wert at
der Unterbrechungspunkt. Alle Auto-Variablen und Funktionsparameter werden entfernt
während des Aufräumvorgangs. Während einer nicht interaktiven Sitzung wird das SIGINT-Signal
beendet den gesamten Lauf von bc.

GRENZEN
Die folgenden Limits gelten derzeit dafür bc Prozessor. Einige von ihnen können
durch eine Installation geändert wurden. Verwenden Sie die Grenzwerte-Anweisung, um die tatsächlichen Werte anzuzeigen.

BC_BASE_MAX
Die maximale Ausgangsbasis ist derzeit auf 999 eingestellt. Die maximale Eingangsbasis beträgt 16.

BC_DIM_MAX
Dies ist derzeit ein willkürlicher Grenzwert von 65535, wie verteilt. Ihre Installation
kann anders sein.

BC_SCALE_MAX
Die Anzahl der Nachkommastellen ist auf INT_MAX Stellen begrenzt. Ebenfalls,
die Anzahl der Stellen vor dem Komma ist auf INT_MAX Stellen begrenzt.

BC_STRING_MAX
Die maximale Anzahl von Zeichen in einer Zeichenfolge beträgt INT_MAX Zeichen.

Exponent
Der Wert des Exponenten in der Erhöhungsoperation (^) ist auf LONG_MAX begrenzt.

Variablennamen
Das aktuelle Limit für die Anzahl der eindeutigen Namen beträgt 32767 für jeden einfachen
Variablen, Arrays und Funktionen.

VARIABLEN


Die folgenden Umgebungsvariablen werden verarbeitet von bc:

POSIXLY_KORREKT
Dies ist das gleiche wie die -s .

BC_ENV_ARGS
Dies ist ein weiterer Mechanismus, um Argumente zu erhalten bc. Das Format ist das gleiche wie das
Kommandozeilenargumente. Diese Argumente werden zuerst verarbeitet, also alle aufgelisteten Dateien
in der Umgebung werden Argumente vor allen Befehlszeilen-Argumentdateien verarbeitet.
Auf diese Weise kann der Benutzer "Standard"-Optionen und Dateien einrichten, die verarbeitet werden sollen
jeder Aufruf von bc. Die Dateien in den Umgebungsvariablen würden normalerweise
enthalten Funktionsdefinitionen für Funktionen, die der Benutzer jedes Mal definiert haben möchte bc is
laufen.

BC_LINE_LENGTH
Dies sollte eine ganze Zahl sein, die die Anzahl der Zeichen in einer Ausgabezeile für . angibt
Zahlen. Dies schließt den umgekehrten Schrägstrich und die Zeilenumbruchzeichen für lange Zahlen ein. Wie
einer Nebenstelle deaktiviert der Wert Null die Mehrleitungsfunktion. Jeder andere Wert
dieser Variablen, die kleiner als 3 ist, setzt die Zeilenlänge auf 70.

DIAGNOSE


Wenn eine Datei in der Befehlszeile nicht geöffnet werden kann, bc wird melden, dass die Datei ist
nicht verfügbar und beenden. Außerdem gibt es Kompilierungs- und Laufzeitdiagnosen, die
selbsterklärend sein.

bc online mit den onworks.net-Diensten verwenden


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

  • 1
    Clover EFI-Bootloader
    Clover EFI-Bootloader
    Projekt ist umgezogen
    https://github.com/CloverHackyColor/CloverBootloader..
    Funktionen: Booten Sie macOS, Windows und Linux
    im UEFI- oder Legacy-Modus auf Mac oder PC mit
    UE...
    Laden Sie den Clover EFI-Bootloader herunter
  • 2
    Unitedrpms
    Unitedrpms
    Begleiten Sie uns in Gitter!
    https://gitter.im/unitedrpms-people/Lobby
    Aktivieren Sie das URPMS-Repository in Ihrem
    System -
    https://github.com/UnitedRPMs/unitedrpms.github.io/bl...
    Laden Sie unitedrpms herunter
  • 3
    Boosten Sie C ++ - Bibliotheken
    Boosten Sie C ++ - Bibliotheken
    Boost bietet kostenlos portabel
    begutachtete C++-Bibliotheken. Die
    Der Schwerpunkt liegt auf tragbaren Bibliotheken, die
    funktionieren gut mit der C++-Standardbibliothek.
    Siehe http://www.bo...
    Laden Sie Boost C++-Bibliotheken herunter
  • 4
    VirtualGL
    VirtualGL
    VirtualGL leitet 3D-Befehle von a um
    Unix/Linux OpenGL-Anwendung auf einem
    serverseitige GPU und konvertiert die
    gerenderte 3D-Bilder in einen Videostream
    mit welchem ​​...
    Laden Sie VirtualGL herunter
  • 5
    libusb
    libusb
    Bibliothek, um den Benutzerbereich zu aktivieren
    Anwendungsprogrammen, mit denen kommuniziert werden soll
    USB-Geräte. Zielgruppe: Entwickler, Ende
    Benutzer/Desktop. Programmiersprache: C.
    Kategorien...
    Laden Sie libusb herunter
  • 6
    SCHLUCK
    SCHLUCK
    SWIG ist ein Softwareentwicklungstool
    das verbindet in C geschriebene Programme und
    C++ mit einer Vielzahl von High-Level
    Programmiersprachen. SWIG wird mit verwendet
    anders...
    SWIG herunterladen
  • Mehr »

Linux-Befehle

Ad