Command Linux / Unix: expr

Enw

expr - Gwerthuso mynegiant

Crynodeb

expr arg ? arg arg ... ?

Concatenates arg 's (gan ychwanegu mannau gwahanu rhyngddynt), yn gwerthuso'r canlyniad fel mynegiad Tcl, ac yn dychwelyd y gwerth. Mae'r gweithredwyr a ganiateir yn mynegiadau Tcl yn is-set o'r gweithredwyr a ganiateir yn mynegiant C, ac mae ganddynt yr un ystyr a blaenoriaeth â'r gweithredwyr C cyfatebol. Mae mynegiant bron bob amser yn cynhyrchu canlyniadau rhifol (gwerthoedd cyfanrif neu bwyntiau symudol). Er enghraifft, yr ymadrodd

expr 8.2 + 6

yn gwerthuso i 14.2. Mae ymadroddion Tcl yn wahanol i ymadroddion C yn y modd y nodir operandau. Hefyd, mae ymadroddion Tcl yn cefnogi operandau ansifrifig a chymariaethau llinynnau.

Gweithrediadau

Mae mynegiant Tcl yn cynnwys cyfuniad o weithrediadau, gweithredwyr a rhyfeloedd. Gellir defnyddio gofod gwyn rhwng y gweithrediadau a'r gweithredwyr a'r rhosynnau; caiff ei anwybyddu gan gyfarwyddiadau'r mynegiant. Lle bo modd, dehonglir operandau fel gwerthoedd cyfan. Gellir nodi gwerthoedd integredig mewn degol (yr achos arferol), yn octal (os yw cymeriad cyntaf yr opsiwn yn 0 ), neu yn hecsadegol (os yw dau gymeriad cyntaf yr opsiwn yn 0x ). Os nad oes gan operand un o'r fformatau cyfanrif a roddir uchod, yna caiff ei drin fel rhif pwynt symudol os yw hynny'n bosibl. Gellir nodi rhifau pwynt symudol mewn unrhyw un o'r ffyrdd a dderbynnir gan gompilerydd ANSI sy'n cydymffurfio â'i gilydd (ac eithrio na chaniateir yr uchafswm f , F , l , ac L yn y rhan fwyaf o osodiadau). Er enghraifft, mae pob un o'r canlynol yn rifau pwynt symudol dilys: 2.1, 3., 6e4, 7.91e + 16. Os nad oes dehongliad rhifol yn bosibl, yna bydd operand yn cael ei adael fel llinyn (a dim ond set gyfyngedig o weithredwyr y gellir ei ddefnyddio iddo).

Gellir nodi gweithrediadau mewn unrhyw un o'r ffyrdd canlynol:

[1]

Fel gwerth rhifol, naill ai'n gyfanrif neu'n bwynt symudol.

[2]

Fel newidydd Tcl, gan ddefnyddio nodiant safonol $ . Defnyddir gwerth y newidyn fel yr opsiwn.

[3]

Fel llinyn wedi'i amgáu mewn dyfynbrisiau dwbl. Bydd y parser mynegiant yn perfformio gwrthgyferbyniadau, newidynnau a gorchmynion gorchymyn ar y wybodaeth rhwng y dyfynbrisiau, a defnyddiwch y gwerth sy'n deillio o'r hyn fel yr opsiwn

[4]

Fel llinyn wedi ei amgáu mewn braces. Defnyddir y cymeriadau rhwng y brace agored a'r brace agos cyfatebol fel yr opsiwn heb unrhyw ddisodli.

[5]

Fel gorchymyn Tcl wedi'i amgáu mewn cromfachau. Bydd y gorchymyn yn cael ei weithredu a bydd ei ganlyniad yn cael ei ddefnyddio fel yr opsiwn.

[6]

Fel swyddogaeth fathemategol y mae gan y dadleuon unrhyw un o'r ffurflenni uchod ar gyfer operands, megis pechod ($ x) . Gweler isod am restr o swyddogaethau diffiniedig.

Lle mae dirprwyon yn digwydd uchod (ee y tu mewn i linynnau a ddyfynnir), fe'u cyflawnir gan gyfarwyddiadau'r mynegiant. Fodd bynnag, efallai y bydd haen ychwanegol o newid yn cael ei berfformio gan y parser gorchymyn cyn i'r prosesydd mynegiant gael ei alw. Fel y trafodir isod, fel arfer mae'n well amgáu ymadroddion mewn braces i atal y parser gorchymyn rhag perfformio dirprwyon ar y cynnwys.

Am rai enghreifftiau o ymadroddion syml, mae'n debyg bod gan y newidydd werth 3 ac mae gan y newidyn b'r gwerth 6. Yna bydd y gorchymyn ar ochr chwith pob un o'r llinellau isod yn cynhyrchu'r gwerth ar ochr dde'r llinell:

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

Gweithredwyr

Mae'r gweithredwyr dilys wedi'u rhestru isod, wedi'u grwpio mewn gorchymyn cynyddol o gynyddu:

- + ~!

Unary minus, unary plus, bit-wise NID, yn rhesymegol NID. Ni ellir cymhwyso unrhyw un o'r operandau hyn i weithrediadau llinyn, ac efallai na ellir defnyddio NID yn ddibynadwy yn unig i gyfanrifau.

* /%

Lluosi, rhannu, gweddill. Ni ellir cymhwyso unrhyw un o'r operandau hyn i weithrediadau llinynnol, a gellir defnyddio'r gweddill yn unig i gyfanrifau. Bydd gan y gweddill yr un arwydd bob amser â'r diviswr a gwerth absoliwt yn llai na'r is-adran.

+ -

Ychwanegwch a thynnu. Yn ddilys ar gyfer unrhyw weithrediadau rhifol.

<< >>

Sifft chwith ac i'r dde. Dilys ar gyfer gweithrediadau cyfanrif yn unig. Mae shifft cywir bob amser yn ysgogi'r arwydd arwydd.

<> <=> =

Booleaidd llai, yn fwy, yn llai na neu'n gyfartal, ac yn fwy na neu'n gyfartal. Mae pob gweithredwr yn cynhyrchu 1 os yw'r amod yn wir, 0 fel arall. Gall y gweithredwyr hyn gael eu cymhwyso i llinynnau ynghyd â gweithrediadau rhifol, ac yn yr achos hwnnw defnyddir cymhariaeth llinyn.

==! =

Boole yn gyfartal ac nid yn gyfartal. Mae pob gweithredwr yn cynhyrchu canlyniad sero / un. Yn ddilys ar gyfer pob math o operand.

&

Yn ddoeth A. Dilys ar gyfer gweithrediadau cyfanrif yn unig.

^

NEU ddibynadwy yn unig. Dilys ar gyfer gweithrediadau cyfanrif yn unig.

|

NE-ddoeth NEU. Dilys ar gyfer gweithrediadau cyfanrif yn unig.

&&

A rhesymegol. Yn cynhyrchu canlyniad 1 os nad yw'r ddau operand yn sero, 0 fel arall. Yn ddilys ar gyfer gweithrediadau boolean a rhifol (cyfanrifau neu bwyntiau symudol) yn unig.

|

NEU Rhesymegol. Yn cynhyrchu canlyniad 0 os yw'r ddau operand yn sero, 1 fel arall. Yn ddilys ar gyfer gweithrediadau boolean a rhifol (cyfanrifau neu bwyntiau symudol) yn unig.

x ? y : z

Os-yna-arall, fel yn C. Os x yn gwerthuso i ddim sero, yna y canlyniad yw gwerth y . Fel arall, y canlyniad yw gwerth z . Rhaid i'r operand x gael gwerth rhifol.

Gweler y llawlyfr C am ragor o fanylion ar y canlyniadau a gynhyrchir gan bob gweithredwr. Pob grŵp gweithredwyr deuaidd chwith i dde o fewn yr un lefel flaenoriaeth. Er enghraifft, y gorchymyn

expr 4 * 2 <7

yn dychwelyd 0.

Y && , || , a ?: mae gan weithredwyr `` gwerthusiad diog '', fel yn C, sy'n golygu nad yw operands yn cael eu gwerthuso os nad oes eu hangen i benderfynu ar y canlyniad. Er enghraifft, yn y gorchymyn

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

dim ond un o [a] neu [b] a gaiff ei werthuso mewn gwirionedd, yn dibynnu ar werth $ v . Sylwch, fodd bynnag, mai dim ond gwir yw hwn os yw'r mynegiant cyfan wedi'i amgáu mewn braces; fel arall, bydd y parser Tcl yn gwerthuso [a] a [b] cyn galw ar y gorchymyn expr .

Swyddogaethau Mathemateg

Mae Tcl yn cefnogi'r swyddogaethau mathemategol canlynol mewn mynegiadau:

log dwbl log sqrt acos dwbl log10 sbon asin exp pow tan atan llawr rand tanh atan2 fmod round ceil hypot sin cos int sinh

abs ( arg )

Yn dychwelyd gwerth absoliwt arg . Gall Arg fod naill ai'n gyfan gwbl neu'n bwynt symudol, a dychwelir y canlyniad yn yr un ffurflen.

acos ( arg )

Yn dychwelyd cosin arc arg , yn yr ystod [0, pi] radians. Dylai Arg fod yn yr ystod [-1,1].

asin ( arg )

Yn dychwelyd y syn arc o arg , yn yr amrediad [-pi / 2, pi / 2] radians. Dylai Arg fod yn yr ystod [-1,1].

atan ( arg )

Yn dychwelyd tangiad arc arg , yn yr amrediad [-pi / 2, pi / 2] radians.

atan2 ( x, y )

Yn dychwelyd tangiad arc y / x , yn yr ystod [-pi, pi] radians. Ni all x a y ddau fod yn 0.

ceil ( arg )

Yn dychwelyd y gwerth cyfanrif lleiaf nad yw'n llai nag arg .

cos ( arg )

Yn dychwelyd y cosin dad , wedi'i fesur yn radian.

cosh ( arg )

Yn dychwelyd y cosin hyperbolig o arg . Pe byddai'r canlyniad yn achosi gorlif, dychwelir gwall.

dwbl ( arg )

Os yw arg yn werth symudol, yn dychwelyd argraff , fel arall mae'n trosi arg i fod yn nofio ac yn dychwelyd y gwerth wedi'i drawsnewid.

exp ( arg )

Yn dychwelyd exponential arg , a ddiffinnir fel e ** arg . Pe byddai'r canlyniad yn achosi gorlif, dychwelir gwall.

llawr ( arg )

Yn dychwelyd y gwerth annatod mwyaf nad yw'n fwy nag arg .

fmod ( x, y )

Yn dychwelyd gweddill pwynt symudol is-adran x by y . Os yw 0 yn 0, dychwelir gwall.

hypot ( x, y )

Yn cyfrifo hyd hypotenuse triongl ongl sgwâr ( x * x + y * y ).

int ( arg )

Os yw arg yn werth cyfanrif, yn dychwelyd argraff , fel arall yn trosi arg i'r cyfanrif trwy dorri ac yn dychwelyd y gwerth wedi'i drawsnewid.

log ( arg )

Yn dychwelyd logarithm naturiol arg . Mae'n rhaid i Arg fod yn werth cadarnhaol.

log10 ( arg )

Yn dychwelyd logarithm sylfaenol 10 arg . Mae'n rhaid i Arg fod yn werth cadarnhaol.

pow ( x, y )

Yn cyfrifo gwerth x a godwyd i'r pŵer y . Os yw x yn negyddol, rhaid iddo fod yn werth cyfanrif.

rand ()

Yn dychwelyd rhif pwynt symudol o sero i ddim ond llai nag un neu, mewn termau mathemategol, yr ystod [0,1). Daw'r had o gloc fewnol y peiriant neu gellir ei osod â llaw gyda'r swyddogaeth srand.

rownd ( arg )

Os yw arg yn werth cyfanrif, yn dychwelyd argraff , fel arall mae'n trosi arg i'r cyfanrif trwy gronni a dychwelyd y gwerth wedi'i drawsnewid.

pechod ( dad )

Yn dychwelyd syn arg dad , wedi'i fesur yn radians.

sinh ( arg )

Yn dychwelyd y syn hyperbolig o arg . Pe byddai'r canlyniad yn achosi gorlif, dychwelir gwall.

sqrt ( arg )

Yn dychwelyd gwraidd sgwâr arg . Rhaid i Arg fod yn negyddol.

srand ( arg )

Mae'r arg , sy'n rhaid ei fod yn gyfanrif, yn cael ei ddefnyddio i ailosod yr had ar gyfer y generadur rhif ar hap. Yn dychwelyd y rhif hap cyntaf o'r had hwnnw. Mae gan bob cyfieithydd ei had ei hun.

tan ( arg )

Yn dychwelyd tangiad arg , wedi'i fesur yn radians.

tanh ( arg )

Yn dychwelyd tangiad hyperbolig arg .

Yn ogystal â'r swyddogaethau rhagnodedig hyn, gall ceisiadau ddiffinio swyddogaethau ychwanegol gan ddefnyddio Tcl_CreateMathFunc ().

Mathau, Overflow, a Precision

Mae'r holl gyfrifiadau mewnol sy'n cynnwys cyfanrifau yn cael eu gwneud gyda'r math C yn hir , ac mae'r holl gyfrifiadau mewnol sy'n cynnwys pwynt symudol yn cael eu gwneud gyda'r math C yn ddwbl . Wrth wrthdroi llinyn i bwynt arnofio, canfyddir gorlif y rhybuddwyr ac yn arwain at gamgymeriad Tcl. Er mwyn trosi i fod yn gyfanrif o linyn, mae canfod gorlif yn dibynnu ar ymddygiad rhai arferion yn y llyfrgell C lleol, felly dylid ei ystyried yn annibynadwy. Mewn unrhyw achos, ni chaniateir gorlifo a thanlif cyfanrif yn ddibynadwy ar gyfer canlyniadau canolraddol. Canfyddir gorlif ac is-lif-bwynt pwynt symudol i'r radd a gefnogir gan y caledwedd, sydd yn gyffredinol yn eithaf dibynadwy.

Mae trosi ymhlith cynrychioliadau mewnol ar gyfer cyfanrif, pwynt symudol, a gweithrediadau llinyn yn cael eu gwneud yn awtomatig yn ôl yr angen. Ar gyfer cyfrifiadau rhifyddeg, defnyddir integreiddiau nes bydd rhywfaint o rifau nofio yn cael ei gyflwyno, ac ar ôl hynny defnyddir pwynt symudol. Er enghraifft,

expr 5/4

yn dychwelyd 1, tra

expr 5 / 4.0 expr 5 / ([hyd llinyn "abcd"] + 0.0)

mae'r ddau yn dychwelyd 1.25. Mae gwerthoedd pwynt symudol bob amser yn cael eu dychwelyd gyda `` . '' neu e fel nad ydynt yn edrych fel gwerthoedd cyfan. Er enghraifft,

expr 20.0 / 5.0

yn dychwelyd 4.0 , nid 4 .

Gweithrediadau Llinynnol

Gellir defnyddio gwerthoedd llinynnol fel operandau'r gweithredwyr cymhariaeth, er bod y gwerthusiad mynegiant yn ceisio gwneud cymariaethau fel cyfanrif neu bwynt symudol pan fo'n bosibl. Os yw un o opsiynau cymhariaeth yn llinyn ac mae gan y llall werth rhifol, mae'r opsiwn rhifol yn cael ei drawsnewid yn ôl i llinyn gan ddefnyddio manyleb y fformat C sprintf % d ar gyfer cyfanrifau a % g ar gyfer gwerthoedd pwynt ar y gweill. Er enghraifft, y gorchmynion

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

Mae'r ddau yn dychwelyd 1. Gwneir y gymhariaeth gyntaf gan ddefnyddio cymhariaeth gyfan, ac mae'r ail yn cael ei wneud gan ddefnyddio cymhariaeth llinyn ar ôl i'r ail operand gael ei drawsnewid i'r llinyn 18 . Oherwydd tueddiad Tcl i drin gwerthoedd fel rhifau pryd bynnag y bo'n bosibl, nid yw'n syniad da i ddefnyddio gweithredwyr fel == pan fyddwch chi wir eisiau cymhariaeth llinynnol a gallai gwerthoedd yr opsiynau fod yn fympwyol; mae'n well yn yr achosion hyn i ddefnyddio'r gorchymyn llinyn yn lle hynny.

Ystyriaethau Perfformiad

Amgaewch ymadroddion mewn braces am y cyflymder gorau a'r gofynion storio lleiaf. Mae hyn yn caniatáu i'r cyflenwr Tcl bytecode gynhyrchu'r cod gorau.

Fel y crybwyllwyd uchod, mae ymadroddion yn cael eu rhoi ddwywaith: unwaith gan y parser Tcl ac unwaith yn ôl y gorchymyn expr . Er enghraifft, y gorchmynion

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

dychwelyd 11, nid lluosog o 4. Mae hyn oherwydd y bydd y parser Tcl yn cymryd lle $ a + 2 yn gyntaf ar gyfer y newidyn b , yna bydd yr orchymyn expr yn gwerthuso'r mynegiant $ a + 2 * 4 .

Nid oes angen ail rownd o ddirprwyon ar y rhan fwyaf o ymadroddion. Naill ai maent yn cael eu hamgáu mewn bracs neu, os nad ydyn nhw, mae eu niferoedd neu gyfeiriadau yn newid niferoedd neu llinynnau nad ydynt eu hunain yn gofyn am dirprwyon. Fodd bynnag, gan fod angen dau rownd o ddisodliadau ar ychydig o ymadroddion heb eu cuddio, rhaid i'r cyflenwr côd byte allyrru cyfarwyddiadau ychwanegol i ymdrin â'r sefyllfa hon. Mae'r cod mwyaf drud yn ofynnol ar gyfer ymadroddion heb eu torri sy'n cynnwys dirprwyon gorchymyn. Rhaid gweithredu'r ymadroddion hyn trwy greu cod newydd bob tro mae'r ymadrodd yn cael ei weithredu.

Geiriau allweddol

rhifyddeg, boolean , cymharu, mynegiant, cymhariaeth ddryslyd

Pwysig: Defnyddiwch y gorchymyn dyn ( % man ) i weld sut mae gorchymyn yn cael ei ddefnyddio ar eich cyfrifiadur penodol.