Command Linux / Unix: expr

Isem

expr - Evalwa espressjoni

Sinteżi

expr arg ? arg arg ... ?

Tikkonjaġi l- arg (iżżid spazji separaturi bejniethom), tevalwa r-riżultat bħala espressjoni Tcl, u tirritorna l-valur. L-operaturi permessi fl-espressjonijiet Tcl huma subsett ta 'l-operaturi permessi fl-espressjonijiet C, u għandhom l-istess tifsira u preċedenza bħall-operaturi C korrispondenti. L-espressjonijiet kważi dejjem jagħtu riżultati numeriċi (valuri ta 'numru sħiħ jew f'wiċċ l-ilma). Per eżempju, l-espressjoni

expr 8.2 + 6

jivvaluta għal 14.2. L-espressjonijiet Tcl huma differenti mill-espressjonijiet C fil-mod kif l-operandi huma speċifikati. Ukoll, l-espressjonijiet Tcl jappoġġjaw operands mhux numeriċi u paraguni ta 'sekwenza.

Operands

L-espressjoni Tcl tikkonsisti f'taħlita ta 'operandi, operaturi, u parentesi. L-ispazju vojt jista 'jintuża bejn l-operandi u l-operaturi u l-parentesi; hija injorata bl-istruzzjonijiet tal-espressjoni. Fejn possibbli, l-operandi huma interpretati bħala valuri ta 'numru sħiħ. Il-valuri tal-integer jistgħu jiġu speċifikati f'depożitu (il-każ normali), f'octal (jekk l-ewwel karattru tal-operand huwa 0 ), jew f'hexadecimal (jekk l-ewwel żewġ karattri tal-operand huma 0x ). Jekk operand ma jkollux wieħed mill-formati ta 'numru sħiħ mogħti hawn fuq, huwa trattat bħala numru ta' punt li jvarja jekk dan ikun possibbli. In-numri tal-punt flottanti jistgħu jiġu speċifikati fi kwalunkwe mod aċċettat minn kompilatur C konformi mal-ANSI (ħlief li s-suffissi F , F , L u L mhumiex permessi fil-biċċa l-kbira tal-installazzjonijiet). Pereżempju, dawn kollha li ġejjin huma numri validi ta 'punt flessibbli: 2.1, 3., 6e4, 7.91e + 16. Jekk l-ebda interpretazzjoni numerika ma hija possibbli, operatur jitħalla bħala sekwenza (u sett limitat ta 'operaturi biss jista' jiġi applikat għalih).

Operands jistgħu jiġu speċifikati fi kwalunkwe mill-modi li ġejjin:

[1]

Bħala valur numeriku, jew numru sħiħ jew punt varjabbli.

[2]

Bħala varjabbli Tcl, bl-użu ta 'nota standard $ . Il-valur tal-varjabbli se jintuża bħala l-operand.

[3]

Bħala spaga magħluqa f'kwistjonijiet doppji. Il-parser ta 'l-espressjoni ser iwettaq sostituzzjonijiet ta' backslash, varjabbli u kmand fuq l-informazzjoni bejn il-kwotazzjonijiet, u juża l-valur li jirriżulta bħala l-operatur

[4]

Bħala spaga magħluqa f'ċineg. Il-karattri bejn iċ-ċinga miftuħa u ċinga tal-għeluq li taqbel se jintużaw bħala l-operand mingħajr sostituzzjonijiet.

[5]

Bħala kmand Tcl magħluq f'parentesi. Il-kmand se jitwettaq u r-riżultat tiegħu ser jintuża bħala l-operand.

[6]

Bħala funzjoni matematika li l-argumenti tagħha għandhom xi waħda mill-forom ta 'hawn fuq għall-operandi, bħad- dnub ($ x) . Ara hawn taħt għal lista ta 'funzjonijiet definiti.

Fejn is-sostituzzjonijiet iseħħu hawn fuq (eż. Kordi kwotati minn ġewwa), huma mwettqa bl-istruzzjonijiet tal-espressjoni. Madankollu, saff addizzjonali ta 'sostituzzjoni jista' jkun diġà sar mill-parser tal-kmand qabel ma l-proċessur tal-espressjoni kien imsejjaħ. Kif diskuss hawn taħt, normalment huwa l-aħjar li tagħlaq espressjonijiet f'ċineg biex tevita li l-parser tal-kmand ma jagħmilx sostituzzjonijiet fuq il-kontenut.

Għal xi eżempji ta 'espressjonijiet sempliċi, nassumu li l-varjabbli a għandu l-valur 3 u l-varjabbli b għandu l-valur 6. Imbagħad il-kmand fuq ix-xellug ta' kull waħda mil-linji t'hawn taħt jipproduċi l-valur fuq il-lemin tal-linja:

expr 3.1 + $ a6.1 expr 2 + "$ a. $ b" 5.6 expr 4 * [llength "6 2"] 8 expr {{kelma waħda} <"kelma $ a"} 0

Operaturi

L-operaturi validi huma elenkati hawn taħt, raggruppati f'ordni ta 'preċedenza li qed tonqos:

- + ~!

Unary minus, unary plus, bit-wisgħa NOT, loġiku MHUX. L-ebda wieħed minn dawn l-operaturi ma jista 'jiġi applikat għall-operandi ta' sekwenza, u MHUX b'xi mod jista 'jiġi applikat biss għan-numri interi.

* /%

Immultiplika, taqsam, bqija. L-ebda wieħed minn dawn l-operaturi ma jista 'jiġi applikat għal operandi ta' sekwenza, u l-bqija jista 'jiġi applikat biss għan-numri interi. Il-bqija dejjem ikollha l-istess sinjal bħad-diviżur u valur assolut iżgħar mid-diviżur.

+ -

Żid u naqqas. Validu għal kull operandi numeriku.

<< >>

Xellug u xellug shift. Validu għall-operaturi tan-numru sħiħ biss. Ċaqliq tal-lemin dejjem ixxerred il-bit tas-sinjal.

<> <=> =

Boolean inqas, akbar, inqas minn jew ugwali, u akbar minn jew ugwali. Kull operatur jipproduċi 1 jekk il-kundizzjoni hija vera, 0 inkella. Dawn l-operaturi jistgħu jiġu applikati għall-kordi kif ukoll għall-operandi numeriċi, f'liema każ jintuża t-tqabbil ta 'sekwenza.

==! =

Boolean ugwali u mhux ugwali. Kull operatur jipproduċi riżultat żero / wieħed. Validu għat-tipi kollha tal-operand.

&

Bit-għaqal U. Validu għall-operaturi tan-numru sħiħ biss.

^

Rekwiżit b'Oura esklussiva. Validu għall-operaturi tan-numru sħiħ biss.

|

Bit-għaqal OR. Validu għall-operaturi tan-numru sħiħ biss.

&&

U loġiku. Jipproduċi riżultat 1 jekk iż-żewġ operaturi m'humiex żero, inkella inkella. Validu għal operaturi booleji u numeriċi (interi jew punt li jżommu f'wiċċ biss).

||

OR loġiku. Jagħmel riżultat 0 jekk iż-żewġ operandi huma żero, 1 inkella. Validu għal operaturi booleji u numeriċi (interi jew punt li jżommu f'wiċċ biss).

x ? y : z

Jekk imbagħad - inkella, bħal fil-Ċ. Jekk x jevalwa mhux żero, allura r-riżultat huwa l-valur ta ' y . Inkella, ir-riżultat huwa l-valur ta ' z . L-operand x għandu jkollu valur numeriku.

Ara l-manwal C għal aktar dettalji dwar ir-riżultati prodotti minn kull operatur. Il-grupp ta ' operaturi binarji xellug għal-lemin fl-istess livell ta' preċedenza. Pereżempju, il-kmand

expr 4 * 2 <7

jirritorna 0.

Il- && , || , u ?: l- operaturi għandhom "evalwazzjoni għażżien", bħal fil-każ C, li jfisser li l-operandi mhumiex evalwati jekk mhumiex meħtieġa biex jiġi ddeterminat ir-riżultat. Pereżempju, fil-kmand

expr {$ v? [a]: [b]}

waħda biss minn [a] jew [b] fil-fatt tiġi evalwata, skond il-valur ta ' $ v . Innota, madankollu, li dan huwa minnu biss jekk l-espressjoni sħiħa tkun magħluqa f'ċineg; inkella, l-parser Tcl se jevalwa kemm [a] kif ukoll [b] qabel jinvoka l-kmand expr .

Funzjonijiet tal-Matematika

Tcl tappoġġja l-funzjonijiet matematiċi li ġejjin f'espressjonijiet:

abs logs tal- ġisem sqrt acos double log10 srand asin exp pow tan atan floor rand tanh atan2 fmod round ceil hypot sin cos int sinh

abs ( arg )

Jirritorna l-valur assolut ta ' arg . Arg jista 'jkun jew numru sħiħ jew punt varjabbli, u r-riżultat jiġi rritornat fl-istess formola.

acos ( arg )

Jirritorna l-ark cosine ta ' arg , fil-firxa ta' [0, pi] radians. Arg għandu jkun fil-medda [-1,1].

asin ( arg )

Jirritorna l-ark sinus ta ' arg , fil-firxa ta' [-pi / 2, pi / 2] radians. Arg għandu jkun fil-medda [-1,1].

atan ( arg )

Jirritorna t-tanġent ark ta ' arg , fil-firxa ta' [-pi / 2, pi / 2] radians.

atan2 ( x, y )

Jirritorna l-ark tanġent ta ' y / x , fil-firxa [-pi, pi] radians. x u y ma jistgħux ikunu tnejn 0.

ceil ( arg )

Jirritorna l-iżgħar valur sħiħ ta 'mhux anqas minn arg .

cos ( arg )

Jirritorna l-cosine ta ' arg , imkejjel f'radjani.

cosh ( arg )

Jirritorna l-kosinu hyperbolic ta ' arg . Jekk ir-riżultat jikkawża tifwir, jingħata żball.

double ( arg )

Jekk arg huwa valur varjabbli, il-prospetti arg , inkella jikkonverti arg għal varjabbli u jirritorna l-valur konvertit.

exp ( arg )

Jirritorna l-esponenzjali ta ' arg , definit bħala e ** arg . Jekk ir-riżultat jikkawża tifwir, jingħata żball.

art ( arg )

Jirritorna l-akbar valur integrali mhux akbar minn arg .

fmod ( x, y )

Jirritorna l-bqija tal-punt flessibbli tad-diviżjoni ta ' x sa' y . Jekk y hija 0, jingħata żball.

hypot ( x, y )

Ikkalkula t-tul tal-hypotenuse ta 'trijanglu b'angolu rett ( x * x + y * y ).

int ( arg )

Jekk arg huwa valur sħiħ, prospetti arg , inkella jikkonverti l- arg għal numru sħiħ bin-nuqqas ta 'qtugħ u jirritorna l-valur konvertit.

log ( arg )

Jirritorna l-logaritmu naturali ta ' arg . Arg għandu jkun valur pożittiv.

log10 ( arg )

Jirritorna l-logaritmu tal-bażi 10 ta ' arg . Arg għandu jkun valur pożittiv.

pow ( x, y )

Ikkalkula l-valur ta ' x imqajjem għall-qawwa y . Jekk x hija negattiva, y trid tkun valur sħiħ.

rand ()

Jirritorna numru ta 'punt varjabbli minn żero għal ftit inqas minn wieħed jew, f'termini matematiċi, il-firxa [0,1]. Iż-żerriegħa ġejja mill-arloġġ intern tal-magna jew tista 'tiġi stabbilita manwali bil-funzjoni tal-qoxra.

round ( arg )

Jekk arg huwa valur ta 'numru sħiħ, prospetti arg , inkella jikkonverti l- arg għal numru sħiħ billi jirranġaw u jirritorna l-valur konvertit.

sin ( arg )

Jirritorna s-sine ta 'l- arg , imkejla f'radjani.

sinh ( arg )

Jirritorna l-sine hyperboliku ta ' arg . Jekk ir-riżultat jikkawża tifwir, jingħata żball.

sqrt ( arg )

Jirritorna l-għerq kwadrat ta ' arg . Arg m'għandux ikun negattiv.

srand ( arg )

L- arg , li għandu jkun numru sħiħ, jintuża biex jerġa 'jistabbilixxi ż-żerriegħa għall-ġeneratur tal-għadd bl-addoċċ. Jirritorna l-ewwel numru bl-addoċċ minn dik iż-żerriegħa. Kull interpretu għandu ż-żerriegħa tiegħu stess.

tan ( arg )

Jirritorna t-tanġent tal- arg , imkejjel f'radjani.

tanh ( arg )

Jirritorna t-tanġent hyperboliku ta ' arg .

Minbarra dawn il-funzjonijiet definiti minn qabel, l-applikazzjonijiet jistgħu jiddefinixxu funzjonijiet addizzjonali billi jużaw Tcl_CreateMathFunc ().

Tipi, Overflow, u Preċiżjoni

Il-komputazzjonijiet interni kollha li jinvolvu n-numri interi jsiru bit-tip C twil , u l-komputazzjonijiet interni kollha li jinvolvu l-punt varjabbli jsiru bit-tip C doppju . Meta jikkonverti s-sekwenza għal punt li jżomm f'wiċċ l-ilma, l-overflow tal-esponent jinstab u jirriżulta fi żball Tcl. Għal konverżjoni għal numru sħiħ minn serje, l-iskoperta ta 'overflow tiddependi fuq l-imġieba ta' xi rutini fil-librerija C lokali, għalhekk għandha titqies bħala mhux affidabbli. Fi kwalunkwe każ, l-overflow ta 'l-għadd sħiħ u l-underflow ġeneralment ma jinstabux b'mod affidabbli għal riżultati intermedji. Il-ffrankar ta 'punti ta' floating point u l-underflow jinstabu sal-grad sostnut mill-hardware, li ġeneralment huwa pjuttost affidabbli.

Il-konverżjoni bejn ir-rappreżentazzjonijiet interni għall-operandi tan-numru sħiħ, il-punt li jżomm f'wiċċ l-ilma u s-sekwenza ssir awtomatikament kif meħtieġ. Għal komputazzjonijiet aritmetiċi, in-numri interi jintużaw sakemm jiddaħħal xi numru ta 'punt flessibbli, u warajh jintuża l-punt varjabbli. Pereżempju,

expr 5/4

jirritorna 1, filwaqt li

expr 5 / 4.0 expr 5 / ([tul ta 'sekwenza "abcd"] + 0.0)

kemm jirritornaw 1.25. Il-valuri tal-punt flottanti huma dejjem irritornati b''` . '' jew e sabiex ma jidhrux daqs valuri ta 'numru sħiħ. Pereżempju,

expr 20.0 / 5.0

jirritorna 4.0 , mhux 4 .

Operazzjonijiet ta 'String

Il-valuri tal-istring jistgħu jintużaw bħala operandi tal-operaturi tal-paragun, għalkemm l-evalwatur tal-espressjoni jipprova jagħmel paraguni bħala numru sħiħ jew punt varjabbli meta jista '. Jekk wieħed mill-operaturi ta 'paragun huwa spag u l-ieħor għandu valur numeriku, l-operand numeriku huwa konvertit lura għal sekwenza bl-użu tal- ispeċifikatur tal- format Sprintf C % d għal interi u % g għal valuri ta' punt flessibbli. Pereżempju, il-kmandi

expr {"0x03"> "2"} expr {"0y" <"0x12"}

kemm ir-ritorn 1. L-ewwel paragun isir bl-użu ta 'paragun sħiħ, u t-tieni jsir bl-użu ta' tqabbil ta 'sekwenza wara li t-tieni operand jiġi konvertit fis-sekwenza 18 . Minħabba t-tendenza ta 'Tcl li tittratta l-valuri bħala numri kull meta jkun possibbli, ġeneralment din mhix idea tajba li tuża operaturi bħal == meta tkun verament tixtieq paragun tas-sekwenza u l-valuri ta' l-operandi jistgħu jkunu arbitrarji; Huwa aħjar f'dawn il-każijiet li tuża l-kmand tal- string minflok.

Kunsiderazzjonijiet ta 'Prestazzjoni

Poġġi l-espressjonijiet fil-ċingi għall-aħjar veloċità u l-iżgħar rekwiżiti tal-ħażna. Dan jippermetti lill-kompilatur tal-bytecode Tcl li jiġġenera l-aħjar kodiċi.

Kif imsemmi hawn fuq, l-espressjonijiet huma sostitwiti darbtejn: darba mill-parser Tcl u darba mill-kmand expr . Pereżempju, il-kmandi

Issettja 3 set b {$ a + 2} expr $ b * 4

ritorn 11, mhux multiplu ta '4. Dan minħabba li l-parser Tcl l-ewwel jibdel $ a + 2 għall-varjabbli b , allura l-kmand expr jevalwa l-espressjoni $ a + 2 * 4 .

Il-maġġoranza tal-espressjonijiet ma jirrikjedux it-tieni dawra ta 'sostituzzjonijiet. Jew huma magħluqa biċ-ċingi jew, jekk le, is-sostituzzjonijiet varjabbli u tal-kmand tagħhom jagħtu numri jew kordi li huma stess ma jeħtiġux sostituzzjonijiet. Madankollu, minħabba li ftit espressjonijiet mhux miksura jeħtieġu żewġ dawriet ta 'sostituzzjonijiet, il-kompilatur tal-bytecode għandu joħroġ struzzjonijiet addizzjonali biex jimmaniġġa din is-sitwazzjoni. Il-kodiċi l-aktar għali huwa meħtieġ għal espressjonijiet mhux bil-maqlub li fihom sostituzzjonijiet tal-kmand. Dawn l-espressjonijiet għandhom jiġu implimentati billi tiġi ġġenerata kodiċi ġdid kull darba li l-espressjoni tiġi esegwita.

Kliem ewlieni

aritmetika, boolean , tqabbil, espressjoni, paragun fuzzy

Importanti: Uża l-kmand tal- bniedem ( % raġel ) biex tara kif tintuża kmand fuq il-kompjuter partikolari tiegħek.