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 + 6jivvaluta 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"} 0Operaturi
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 <7jirritorna 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 sinhabs ( 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/4jirritorna 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.0jirritorna 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 * 4ritorn 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.