Amri ya Linux / Unix: expr

Jina

Expr - Tathmini maoni

Sahihi

expr arg ? hoja ya ...

Inakabiliana na arg (s kuongeza nafasi ya mgawanyiko kati yao), inachunguza matokeo kama usemi wa Tcl, na inarudi thamani. Wafanyakazi wanaoruhusiwa katika maneno ya Tcl ni sehemu ndogo ya waendeshaji inaruhusiwa katika maneno ya C, na wana maana sawa na ya kwanza kama waendeshaji wa C husika. Maneno karibu kila mara hutoa matokeo ya nambari (maadili kamili au yaliyomo ya uhakika). Kwa mfano, maneno

Expr 8.2 + 6

inatathmini kwa 14.2. Maneno ya Tcl yanatofautiana kutoka kwa maneno ya C kwa njia ambazo operesheni zinaelezwa. Pia, maneno ya Tcl yanasaidia waendeshaji zisizo na namba na kulinganisha kamba.

Operesheni

Maneno ya Tcl yanajumuisha mchanganyiko wa waendeshaji, waendeshaji, na mahusiano. Nafasi nyeupe inaweza kutumika kati ya waendeshaji na waendeshaji na mabano; inachunguzwa na maagizo ya maneno. Wapi iwezekanavyo, operesheni hutafsiriwa kama viwango vya integer. Maadili makuu yanaweza kutajwa katika decimal (kesi ya kawaida), katika octal (kama tabia ya kwanza ya operand ni 0 ), au katika hexadecimal (kama wahusika wawili wa kwanza wa operand ni 0x ). Ikiwa operesheni hawana mojawapo ya muundo wa integu uliotolewa hapo juu, basi inachukuliwa kama nambari ya hatua inayozunguka ikiwa inawezekana. Nambari za hatua zinazozunguka zinaweza kutajwa katika njia yoyote iliyokubalika na compiler inayofaa ya ANSI (isipokuwa kuwa vifungo vya f , F , l , na L havikubaliki katika vipimo vingi). Kwa mfano, yote yafuatayo ni nambari halali ya uhakika: 2.1, 3., 6e4, 7.91e + 16. Ikiwa hakuna tafsiri ya nambari inawezekana, basi operesheni imesalia kama kamba (na seti ndogo ya waendeshaji inaweza kutumika kwa hilo).

Operesheni inaweza kuelezwa kwa njia zifuatazo:

[1]

Kama thamani ya nambari, ama integer au hatua inayozunguka.

[2]

Kama tofauti ya Tcl, kwa kutumia kiwango cha kawaida cha $ . Thamani ya variable itakuwa kutumika kama operand.

[3]

Kama kamba iliyofungwa katika quotes mbili. Mchapishaji wa maonyesho atafanya uingizaji wa kurudi nyuma, kutofautiana, na amri juu ya habari kati ya quotes, na kutumia thamani inayosababisha kama operesheni

[4]

Kama kamba iliyofungwa katika braces. Wahusika kati ya safu ya wazi na vinavyolingana na ujuzi wa karibu watatumika kama waendeshaji bila mbadala yoyote.

[5]

Kama amri Tcl iliyofungwa katika mabano. Amri itafanywa na matokeo yake yatatumika kama operesheni.

[6]

Kama kazi ya hisabati ambayo hoja zake zina aina yoyote ya juu kwa operesheni, kama vile dhambi ($ x) . Angalia hapa chini kwa orodha ya kazi zilizofafanuliwa.

Ambapo mbadala hutokea hapo juu (kwa mfano ndani ya masharti yaliyotajwa), yanafanywa na maagizo ya maneno. Hata hivyo, safu ya ziada ya kubadilisha inaweza kuwa imefanywa na msimamizi wa amri kabla mchakato wa kujieleza uliitwa. Kama ilivyojadiliwa hapo chini, kwa kawaida ni bora kufungia maneno katika braces ili kuzuia msimamizi wa amri kutoka kwa kufanya mbadala kwenye maudhui.

Kwa baadhi ya mifano ya maneno rahisi, fikiria kuwa variable ina thamani 3 na variable b ina thamani 6. Kisha amri upande wa kushoto wa kila mstari wa chini utazalisha thamani upande wa kulia wa mstari:

expr 3.1 + $ a6.1 expr 2 + "$ a. $ b" 5.6 expr 4 * [llength "6 2"] 8 Expr {{neno moja} <"neno $ a"} 0

Waendeshaji

Waendeshaji halali waliorodheshwa hapa chini, wamejumuishwa katika utaratibu wa kupungua wa utangulizi:

- + ~!

Unary minus, unary plus, kidogo busara NOT, mantiki NOT. Hakuna moja ya waendeshaji haya yanaweza kutumika kwa operesheni za kamba, na si busara sio inaweza kutumika tu kwa wingi.

* /%

Panua, usagawanye, salio. Hakuna moja ya waendeshaji haya yanaweza kutumika kwa operesheni za kamba, na salio inaweza kutumika tu kwa wingi. Waliobaki daima watakuwa na ishara sawa kama mshauri na thamani kamili kabisa kuliko mshauri.

+ -

Ongeza na uondoe. Halali kwa waendeshaji wowote wa nambari.

<< >>

Kushoto na kulia kuhama. Halali kwa ajili ya shughuli nyingi tu. Kusonga kwa haki kila wakati hueneza bit.

<> <=> =

Boolean chini, kubwa, chini au sawa, na kubwa kuliko au sawa. Kila operator hutoa 1 ikiwa hali ni kweli, 0 vinginevyo. Waendeshaji hawa wanaweza kutumiwa kwenye viungo pamoja na operesheni za simu, ambapo kulinganisha kamba ya kesi hutumiwa.

==! =

Boolean sawa na si sawa. Kila operator hutoa matokeo ya sifuri / moja. Halali kwa aina zote za kazi.

&

Njia ya busara NA. Halali kwa ajili ya shughuli nyingi tu.

^

Njia ya busara ya kipekee AU. Halali kwa ajili ya shughuli nyingi tu.

|. |

Njia ya busara OR. Halali kwa ajili ya shughuli nyingi tu.

&&

Alama na. Inaleta matokeo 1 ikiwa operesheni zote mbili si zero, 0 vinginevyo. Halali kwa boolean na numeric (integers au floating-uhakika) operands tu.

||

Alama ya Alama. Inazalisha matokeo 0 ikiwa operesheni zote mbili zero, 1 vinginevyo. Halali kwa boolean na numeric (integers au floating-uhakika) operands tu.

x ? y : z

Ikiwa-basi, kama ilivyo katika C. Ikiwa x inapima kwa yasiyo ya zero, basi matokeo ni thamani ya y . Vinginevyo, matokeo ni thamani ya z . Operesheni ya x lazima iwe na thamani ya nambari.

Angalia mwongozo wa C kwa maelezo zaidi kuhusu matokeo yaliyotolewa na kila operesheni. Wote wa waendeshaji wa binary kundi kushoto-to-kulia ndani ya kiwango sawa ya utangulizi. Kwa mfano, amri

expr 4 * 2 <7

inarudi 0.

The && , || , na ?: waendeshaji wana `tathmini ya wavivu '', kama ilivyo kwenye C, ambayo inamaanisha kwamba operesheni hazipimwa ikiwa hazihitajika kuamua matokeo. Kwa mfano, kwa amri

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

moja tu ya [a] au [b] itakuwa kweli kuchunguzwa, kulingana na thamani ya $ v . Kumbuka, hata hivyo, kwamba hii ni ya kweli tu ikiwa maneno yote yameingizwa katika bongo; vinginevyo, mtumiaji wa Tcl atapima wote wawili na [b] kabla ya kuomba amri ya expr .

Kazi za Math

Tcl inasaidia kazi zifuatazo za hisabati katika maneno:

abs cosh log sqrt acos mara mbili log10 srand asin exp kwa tan atan chini sakafu rand tanh atan2 fmod pande zote husafisha sin cos int sinh

sio ( hoja )

Inarudi thamani kamili ya arg . Arg inaweza kuwa integer au uhakika-floating, na matokeo ni kurudi kwa fomu moja.

acos (arg )

Inarudi arc cosine ya arg , katika radian [0, pi]. Arg inapaswa kuwa katika upeo [-1.1].

asin ( arg )

Inaruhusu arc sine ya arg , katika radi-[2pi / 2, pi / 2] mbalimbali. Arg inapaswa kuwa katika upeo [-1.1].

atan ( arg )

Hurejesha arc tangent ya arg , katika radi-[2pi / 2, pi / 2] mbalimbali.

atan2 ( x, y )

Inarudi tangent ya arc ya y / x , katika radian [-pi, pi]. x na y hawawezi wote kuwa 0.

fanya ( sw )

Inarudi thamani ndogo kabisa ya integer si chini ya arg .

sura ( hoja )

Inarudi cosine ya arg , ikilinganishwa na radians.

cosh ( arg )

Inarudi cosper hyperbolic ya arg . Ikiwa matokeo yatasababisha kuongezeka, kosa linarudi.

mara mbili ( arg )

Ikiwa ni thamani ya kuongezeka , inarudi hoja , vinginevyo inabadili hoja kuelekea na inarudi thamani iliyobadilishwa.

exp ( arg )

Inaruhusu ufafanuzi wa arg , umefafanuliwa kama e ** arg . Ikiwa matokeo yatasababisha kuongezeka, kosa linarudi.

sakafu ( arg )

Hurejesha thamani kubwa ya ushiriki isiyo kubwa zaidi kuliko arg .

fmod ( x, y )

Hurejesha salio la kusambaza la mgawanyiko wa x na y . Ikiwa y ni 0, kosa linarudi.

hypot ( x, y )

Inachukua urefu wa hypotenuse ya pembetatu ya angled ( x * x + y * y ).

int ( arg )

Ikiwa ni thamani ya integer, anarudi hoja , vinginevyo hugeuza hoja kwa integer kwa truncation na kurejesha thamani iliyobadilishwa.

logi ( hoja )

Inarudi logarithm ya asili ya arg . Arg lazima iwe thamani nzuri.

weka alama 10 ( arg )

Inaruhusu logarithm ya msingi 10 ya arg . Arg lazima iwe thamani nzuri.

poda ( x, y )

Inapingana na thamani ya x iliyoinuliwa kwa nguvu y . Ikiwa x ni hasi, y lazima iwe thamani ya integer.

rand ()

Hurejesha nambari ya hatua inayozunguka kutoka sifuri hadi chini ya moja au, kwa maneno ya hisabati, upeo [0,1]. Mbegu hutoka saa ya ndani ya mashine au inaweza kuweka mwongozo na kazi ya srand.

pande zote ( arg )

Ikiwa arg ni thamani ya integer, anarudi hoja , vinginevyo hugeuza hoja kwa integer kwa kuzunguka na kurejesha thamani iliyobadilishwa.

dhambi ( arg )

Inarudi sine ya arg , kipimo kwa radians.

sinh ( arg )

Inarudi hyperbolic sine ya arg . Ikiwa matokeo yatasababisha kuongezeka, kosa linarudi.

sqrt ( arg )

Inarudi mizizi ya mraba ya arg . Arg lazima iwe yasiyo ya hasi.

srand (arg )

Yafu , ambayo inapaswa kuwa integer, inatumiwa kuweka upya mbegu kwa jenereta ya nambari ya random. Inarudi idadi ya kwanza ya nasibu kutoka kwa mbegu hiyo. Kila mkalimani ana mbegu yake mwenyewe.

tan ( arg )

Inarudi tangent ya arg , kipimo katika radians.

tanh ( arg )

Inarudi tangent ya hyperbolic ya arg .

Mbali na kazi hizi zilizotanguliwa , programu zinaweza kufafanua kazi za ziada kwa kutumia Tcl_CreateMathFunc ().

Aina, Kuongezeka, na Ufanisi

Mchanganyiko wa ndani wote unaohusisha integers hufanywa kwa aina ya C muda mrefu , na mchanganyiko wote wa ndani unaohusisha hatua ya kuelekezwa hufanyika na aina ya C mara mbili . Wakati wa kubadili kamba kwa hatua ya kuelea, kuongezeka kwa maonyesho hugunduliwa na husababisha kosa la Tcl. Kwa kugeuka kwa integer kutoka kamba, kugundua kwa kuzidi kunategemea tabia ya vitendo vingine katika maktaba ya ndani ya C, hivyo inapaswa kuonekana kuwa haiaminika. Kwa hali yoyote, kuongezeka kwa integer na kutoweka kwa ujumla haipatikani kwa uhakika kwa matokeo ya kati. Ufikiaji wa uhakika unaozunguka na unyevu unaonekana kwa kiwango kinachoungwa mkono na vifaa, ambavyo kwa kawaida ni vya kuaminika.

Kubadili kati ya uwakilishi wa ndani kwa integer, floating-point, na operesheni za kamba hufanyika moja kwa moja kama inahitajika. Kwa mahesabu ya hesabu, integers hutumiwa hadi nambari fulani ya hatua inayoelekezwa itaanzishwa, baada ya hatua inayotembea hutumiwa. Kwa mfano,

expr 5/4

inarudi 1, wakati

expr 5 / 4.0 expr 5 / ([string urefu "abcd"] + 0.0)

wote kurudi 1.25. Maadili ya kiwango cha chini yanarejeshwa kwa `` . '' au e ili wasione kama thamani ya integu. Kwa mfano,

expr 20.0 / 5.0

inarudi 4.0 , sio 4 .

Uendeshaji wa String

Maadili ya pembe yanaweza kutumika kama waendeshaji wa waendeshaji wa kulinganisha, ingawa mtathmini wa kujieleza anajaribu kulinganisha kama integer au hatua inayozunguka wakati inavyoweza. Ikiwa moja ya waendeshaji wa kulinganisha ni kamba na nyingine ina thamani ya namba, operesheni ya nambari inabadilishwa kwenye kamba kutumia C specifikationer ya C ya sprintf % d kwa integers na % g kwa maadili ya uhakika. Kwa mfano, amri

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

wote kurudi 1. Ulinganisho wa kwanza unafanywa kwa kutumia kulinganisha kamili, na pili inafanywa kwa kulinganisha kamba baada ya operesheni ya pili inabadilishwa kwa kamba 18 . Kwa sababu ya tabia ya Tcl kutibu maadili kama idadi wakati wowote iwezekanavyo, sio wazo la kawaida kutumia watumiaji kama == unapotaka kulinganisha kamba na maadili ya waendeshaji inaweza kuwa kiholela; ni vyema katika kesi hizi kutumia amri ya kamba badala yake.

Mazingatio ya Utendaji

Futa maneno katika braces kwa kasi bora na mahitaji ya kuhifadhi ndogo. Hii inaruhusu mtunzi wa Tcl bytecode kuzalisha kanuni bora.

Kama ilivyoelezwa hapo juu, maneno yamebadilishwa mara mbili: mara moja kwa mtumiaji wa Tcl na mara moja kwa amri ya expr . Kwa mfano, amri

kuweka 3 kuweka b {$ a + 2} expr $ b * 4

kurudi 11, sio nyingi ya 4. Hii ni kwa sababu mtumiaji wa Tcl ataweka nafasi ya kwanza $ $ + 2 kwa variable b , kisha amri ya expr itapima maelezo ya $ + 2 * 4 .

Maneno mengi hauhitaji mzunguko wa pili wa mbadala. Labda zimefungwa katika braces au, ikiwa sio, mbadala yao ya kutofautiana na amri huzaa idadi au masharti ambayo hayajakii badala. Hata hivyo, kwa sababu maneno machache yasiyojumuishwa yanahitaji safu mbili za uingizaji, mshirika wa bytecode lazima atutoe maagizo ya ziada ili kushughulikia hali hii. Msimbo wa gharama kubwa zaidi unahitajika kwa maneno yasiyo na maandishi yaliyo na uingizaji wa amri. Maneno haya yanapaswa kutekelezwa kwa kuzalisha msimbo mpya kila wakati maneno yanafanyika.

Maneno

hesabu, boolean , kulinganisha, kujielezea, kulinganisha fuzzy

Muhimu: Tumia amri ya mtu ( % mtu ) ili kuona jinsi amri hutumiwa kwenye kompyuta yako fulani.