לינוקס / יוניקס קאַמאַנד: עקספּר

נאָמען

עקספּר - עוואַלואַטע אַן אויסדרוק

סינאָפּסיס

expr arg ? טאָן ניט אַרייַן ... ?

קאָנאַקאַטאַנאַטעס אַרג 'ס (אַדאַפּט סעפּאַראַטאָר ספּייסיז צווישן זיי), יוואַליוייץ די רעזולטאַט ווי אַ טקל אויסדרוק, און קערט די ווערט. די אָפּערייטערז דערלויבט אין טקל אויסדרוקן זענען אַ סאַבסעט פון די אָפּערייטערז דערלויבט אין C אויסדרוקן, און זיי האָבן די זעלבע טייַטש און פאָרויס ווי די קאָראַספּאַנדינג C אָפּערייטערז. עקספּרעססיאָנס כּמעט שטענדיק טראָגן נומעריק רעזולטאטן (ינטעגער אָדער פלאָוטינג-פונט וואַלועס). פֿאַר בייַשפּיל, די אויסדרוק

expr 8.2 + 6

יוואַליוייץ צו 14.2. טקל אויסדרוקן זענען אַנדערש פון C אויסדרוקן אין די וועג וואָס אַפּעראַנדז זענען ספּעסאַפייד. אויך, טקל אויסדרוקן שטיצן ניט-נומעריק אַפּעראַנדז און שטריקל קאַמפּעראַסאַנז.

אָפּעראַטיאָנס

א טקל אויסדרוק באשטייט פון א קאָמבינאַציע פון ​​אַפּערענדז, אָפּערייטערז, און קלאַמז. ווייַס אָרט קען זיין געוויינט צווישן די אַפּערענדז און אָפּערייטערז און קלאַמז; עס איז איגנאָרירט דורך ינסטראַקשאַנז. ווו מעגלעך, אַפּערענדז זענען ינטערפּראַטאַד ווי ינטאַדזשער וואַלועס. ינטעגער וואַלועס קענען זיין ספּעסאַפייד אין דעצימאַל (דער נאָרמאַל פאַל), אין אָקטאַל (אויב דער ערשטער כאַראַקטער פון דער אָפּעראַציע איז 0 ), אָדער אין העקסאַדעסימאַל (אויב דער ערשטער צוויי אותיות פון דער אָפּעראַטאָר זענען 0 קס ). אויב אַ אָפּערע טוט נישט האָבן איינער פון די ינטאַדזשער פֿאָרמאַטירונגען געגעבן אויבן, דעמאָלט עס איז באהאנדלט ווי אַ פלאָוטינג פונט נומער אויב דאָס איז מעגלעך. די פלאָאַטינג-פונט נומערן קענען זיין ספּעסאַפייד אין קיין פון די וועגן פון אַ אַנסי-קאָמפּליאַנט C קאַמפּיילער (אַחוץ אַז די ף , ף , ף, און ל סאַפיקס וועט ניט זיין דערלויבט אין רובֿ ינסטאַליישאַנז). פֿאַר בייַשפּיל, אַלע די פאלגענדע זענען גילטיק פלאָוטינג-פונט נומערן: 2.1, 3., 6e4, 7.91e + 16. אויב ניט נומעריק ינטערפּריטיישאַן איז מעגלעך, דעמאָלט אַן אָפּעראַציע איז לינקס ווי אַ שטריקל (און בלויז אַ לימיטעד שטעלן פון אָפּערייטערז קענען זיין געווענדט צו עס).

אָפּערנס קען זיין ספּעסאַפייד אין קיין פון די פאלגענדע וועגן:

[1]

ווי אַ נומעריק ווערט, אָדער ינטאַדזשער אָדער פלאָוטינג-פונט.

[2]

ווי אַ טקל בייַטעוודיק, ניצן נאָרמאַל $ נאָוטיישאַן. די בייַטעוודיק ווערט וועט ווערן געניצט ווי דער אָפּעראַטאָר.

[3]

ווי אַ שטריקל ענקלאָוזד אין טאָפּל קוואָטעס. דער אויסדרוק פּאַרסער וועט דורכפירן באַקקלאַש, בייַטעוודיק, און באַפֿעלן סאַבסטיטיושאַנז אויף די אינפֿאָרמאַציע צווישן די קוואָטעס, און נוצן די ריזאַלטינג ווערט ווי דער אָפּער

[4]

ווי אַ שטריקל ענקלאָוזד אין ברייסאַז. די אותיות צווישן די עפענען בראַסע און ריכטן נאָענט בראַסע וועט זיין געניצט ווי דער אָפּעראַטאָר אָן קיין סאַבסטיטיושאַנז.

[5]

ווי אַ טקל באַפֿעל ענקלאָוזד אין בראַקאַץ. דער באַפֿעל וועט זיין עקסאַקיוטיד און זייַן רעזולטאַט וועט זיין געוויינט ווי דער אָפּעראַטאָר.

[6]

ווי אַ מאַטאַמאַטיקאַל פֿונקציע וועמענס אַרגומענטן האָבן קיין פון די אויבן פארמען פֿאַר אַפּערענדס אַזאַ ווי זינד ($ x) . זען אונטן פֿאַר אַ רשימה פון דיפיינד פאַנגקשאַנז.

וואו סאַבסטיטושאַנז פאַלן אויבן (למשל ין ציטירטן סטרינגס), זיי זענען געטאן דורך די ינסטראַקשאַנז פון די אויסדרוק. אָבער, אַ נאָך פּלאַסט פון סאַבסטיטושאַן קען שוין האָבן געטאן דורך די באַפֿעלן פּאַרסער איידער די אויסדרוק פּראַסעסער איז גערופן. ווי דיסקאַסט אויבן, עס איז יוזשאַוואַלי בעסטער צו אַרייַנמישנ אויסדרוקן אין בראַסעס צו פאַרמייַדן די באַפֿעלן פּאַרסער פון פּערפאָרמינג סובסטיטושאַנז אויף דעם אינהאַלט.

פֿאַר עטלעכע ביישפילן פון פּשוט אויסדרוקן, רעכן די בייַטעוודיק אַ האט די ווערט 3 און די בייַטעוודיק b האט די ווערט 6. דעריבער די באַפֿעל אויף די לינקס זייַט פון יעדער פון די שורות ונטער וועט פּראָדוצירן די ווערט אויף די רעכט זייַט פון די שורה:

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

Operators

די גילטיק אָפּערייטערז זענען ליסטעד ונטער, גראָוינג אין דיקריסט סדר פון פאָרויסזאָגן:

- + ~!

וני מינוס, ונאַרי פּלוס, ביסל-קלאַנג נישט, לאַדזשיקאַל נישט. קיינער פון די אַפּערענדס קען זיין געווענדט צו סטרינג אַפּעראַנדז, און ביט-קלוג נישט קען זיין געווענדט בלויז צו ינטאַדזשערז.

* /%

מולטיפּלי, טיילן, רעשט. קיינער פון די אַפּערענדס קען זיין געווענדט צו שטריקל אָפּעראַנדז, און רעסטאָראַן קען זיין געווענדט בלויז צו ינטאַדזשערז. דער רעשט שטענדיק האָבן די זעלבע צייכן ווי די דיווייזער און אַן אַבסאָלוט ווערט קלענערער ווי די דיווייזער.

+ -

לייג און אַראָפּרעכענען. גילטיק פֿאַר קיין נומעריק אַפּעראַנדז.

<< >>

לינקס און רעכט שיפט. גילטיק פֿאַר ינטעגער אָפּעראַנד בלויז. א רעכט יבעררוק שטענדיק פּראַפּאַגייץ די צייכן ביסל.

<> <=> =

באָאָלעאַן ווייניקער, גרעסער, ווייניקער ווי אָדער גלייַך, און גרעסער ווי אָדער גלייַך. יעדער אָפּעראַטאָר טראגט 1 אויב די צושטאַנד איז אמת, 0 אַנדערש. די אָפּערייטערז קענען זיין געווענדט צו סטרינגס און נומעריק אַפּעראַנדז, אין וועלכע פאַל די סטרינג פאַרגלייַך איז געניצט.

==! =

באָאָלעאַן גלייַך און נישט גלייַך. יעדער אָפּעראַטאָר טראגט אַ נול / איין רעזולטאַט. גילטיק פֿאַר אַלע אַפּעריישאַנז.

&

ביט-קלוג און. גילטיק פֿאַר ינטעגער אָפּעראַנד בלויז.

^

ביט-קלוג ויסשליסיק אָדער. גילטיק פֿאַר ינטעגער אָפּעראַנד בלויז.

|

ביט-קלוג אָדער. גילטיק פֿאַר ינטעגער אָפּעראַנד בלויז.

&&

לאָגיקאַל און. פּראָדוצירט אַ 1 רעזולטאַט אויב ביידע אַפּערענדז זענען ניט-נול, 0 אַנדערש. גילטיק פֿאַר באָאָלעאַן און נומעריק (ינטאַדזשערז אָדער פלאָוטינג-פונט) אַפּעראַנד בלויז.

||

לאָגיקאַל OR. פּראָדוצירט אַ 0 רעזולטאַט אויב ביידע אַפּערענדז זענען נול, 1 אַנדערש. גילטיק פֿאַר באָאָלעאַן און נומעריק (ינטאַדזשערז אָדער פלאָוטינג-פונט) אַפּעראַנד בלויז.

x ? y : z

אויב-דעמאָלט-אַנדערש, ווי אין סי אויב רענטגענ יוואַליוייץ צו ניט-נול, דעמאָלט דער רעזולטאַט איז די ווערט פון י . אַנדערש, דער רעזולטאַט איז די ווערט פון ז . די X אָפּעראַנד מוזן האָבן אַ נומעריק ווערט.

זען די C מאַנואַל פֿאַר מער פרטים אויף די רעזולטאטן פון יעדער אָפּעראַטאָר. אַלע פון ​​די ביינערי אָפּערייטערז גרופּע לינקס-צו-רעכט ין דער זעלביקער פּריסעס מדרגה. פֿאַר בייַשפּיל, די באַפֿעל

עקספּר 4 * 2 <7

קערט 0.

די && , || , און ?: אָפּערייטערז האָבן `` פויל עוואַלואַטיאָן '', ווי אין C, וואָס מיטל אַז אַפּערענדז זענען נישט עוואַלואַטעד אויב זיי זענען נישט דארף צו באַשטימען דעם רעזולטאַט. פֿאַר בייַשפּיל, אין די באַפֿעל

expr {$ v? [אַ]: [ב]}

נאָר איינער פון [אַ] אָדער [ב] וועט פאקטיש זיין עוואַלואַטעד, דיפּענדינג אויף די ווערט פון $ V. באַמערקונג, אָבער, אַז דאָס איז נאָר אמת אויב די גאנצע אויסדרוק איז אַרייַנגערעכנט אין ברייסאַז; אַנדערש, די טקל פּאַרסער וועט אָפּשאַצן ביידע [אַ] און [ב] איידער ינוואָוקינג די עקספּר באַפֿעל.

Math Functions

טקל שטיצט די פאלגענדע מאַטאַמאַטיקאַל פאַנגקשאַנז אין אויסדרוקן:

אַבס קאָש קלאָץ סקרט אַקאָס טאָפּל לאָג 10 סראַנד אַסין עקספּ פּאָם טאַן אַטאַן פלאָר ראַנד טאַנה אַטאַנ 2 פמאַד קייַלעכיק סיל היפּאָט זינד קאָס ינט סין

אַבס ( אַרג )

רעטורנס די אַבסאָלוט ווערט פון אַרג . אַרג זאל זיין ינטאַדזשער אָדער פלאָוטינג-פונט, און דער רעזולטאַט איז אומגעקערט אין דער זעלביקער פאָרעם.

אַקאָס ( אַרג )

קומט אַרקאָס קאָסינע פון אַרג , אין די קייט [0, פּי] ראַדיאַנס. אַרג זאָל זיין אין די קייט [-1,1].

אַסין ( אַרג )

קומט אַרקיין סין פון אַרג , אין די קייט [-י / 2, פּי / 2] ראַדיאַנס. אַרג זאָל זיין אין די קייט [-1,1].

אַטאַן ( אַרג )

קומט דער אַרק טאַנגענט פון אַרג , אין די קייט [-י / 2, פּי / 2] ראַדיאַנס.

atan2 ( x, y )

קומט דער אַרק טאַנגענט פון י / X , אין די קייט [-פּי, פּי] ראַדיאַנס. x און י קענען נישט זיין ביי 0.

ceil ( arg )

רעטורנס דער קלענסטער ינטאַדזשער ווערט ניט ווייניקער ווי אַרג .

קאָס ( אַרג )

קומט דער קאָסינע פון אַרג , געמאסטן אין ראַדיאַנס.

קאַש ( אַרג )

קערט דער כייפּערבאַליק קאָסינע פון אַרג . אויב דער רעזולטאַט וועט פאַרשאַפן אַ לויפן, אַ טעות איז אומגעקערט.

טאָפּל ( אַרג )

אויב אַרג איז אַ פלאָוטינג ווערט, קערט אַרג , אַנדערש קאַנווערץ אַרג צו פלאָוטינג און קערט דער קאָנווערטעד ווערט.

exp ( arg )

קומט דער עקספּאָונענשאַל פון אַרג , דיפיינד ווי E ** אַרג . אויב דער רעזולטאַט וועט פאַרשאַפן אַ לויפן, אַ טעות איז אומגעקערט.

שטאָק ( אַרג )

רעטורנס דער גרעסטער ינטאַגראַל ווערט איז נישט גרעסער ווי אַרג .

fmod ( x, y )

רעטורנס די פלאָוטינג פונט רימיינדער פון די טייל פון x דורך י . אויב y איז 0, אַ טעות איז אומגעקערט.

היפּאָט ( X, י )

קאַמפּיוז די לענג פון די כייפּאָטענוסע פון ​​אַ רעכט-אַנגגאַלד דרייַעק ( X * X + י * י ).

int ( arg )

אויב אַרג איז אַן ינטאַדזשער ווערט, קערט אַרג , אַנדערש קאַנווערץ אַרג צו ינטעגער דורך טראַנגקיישאַן און קערט דער קאָנווערטעד ווערט.

קלאָץ ( אַרג )

דערמאנט די נאַטירלעך לאַגעראַריטה פון אַרג . אַרג מוזן זיין אַ positive ווערט.

log10 ( arg )

רעטורנס די באַזע 10 לאָגאַריטהם פון אַרג . אַרג מוזן זיין אַ positive ווערט.

פּאַו ( X, י )

קאַמפּיוז די ווערט פון X אויפשטיין צו די מאַכט י . אויב רענטגענ איז נעגאַטיוו, איר מוזן זיין אַ ינטאַדזשער ווערט.

ראַנד ()

דערמיט אַ פלאָוטינג פונט נומער פון נול צו נאָר ווייניקער ווי איין אָדער, אין מאַטאַמאַטיקאַל טנאָים, די קייט [0,1]. דער זוימען קומט פון די ינערלעך זייגער פון די מאַשין אָדער קען זיין שטעלן מאַנואַל מיט די סראַנד פונקציאָנירן.

קייַלעכיק ( אַרג )

אויב אַרג איז אַ ינטאַדזשער ווערט, קערט אַרג , אַנדערש קאַנווערץ אַרג צו ינטעגער דורך ראַונדינג און קערט דער קאָנווערטעד ווערט.

זינד ( אַרג )

דערמאנט די סינוס פון אַרג , געמאסטן אין ראַדיאַנס.

סינה ( אַרג )

קומט די כייפּערבאַליק סינאָ פון אַרג . אויב דער רעזולטאַט וועט פאַרשאַפן אַ לויפן, אַ טעות איז אומגעקערט.

סקרט ( אַרג )

קומט דער קוואדראט שורש פון אַרג . אַרג מוזן זייַן ניט-נעגאַטיוו.

סראַנד ( אַרג )

די אַרג , וואָס מוזן זיין אַ ינטאַדזשער, איז געניצט צו באַשטעטיק די זוימען פֿאַר די טראַפ - נומער גענעראַטאָר. דער ערשטער טראַפ - נומער קומט פון אַז זוימען. יעדער יבערזעצער האט זייַן אייגן זוימען.

tan ( arg )

רעטורנס די טאַנגענט פון אַרג , געמאסטן אין ראַדיאַנס.

tanh ( arg )

האלט די כייפּערבאַליק טאַנגענט פון אַרג .

אין דערצו צו די פּרעדעפינעד פאַנגקשאַנז, אַפּלאַקיישאַנז קענען זיין באַשטימט נאָך פאַנגקשאַנז ניצן טקל_קרעאַטעמאַטהפונק ().

טייפּס, אָווערפלאָוו, און פּינטלעכקייַט

אַלע אינערלעכער קאַמפּיאַטיישאַנז אַרייַנגערעכנט ינטאַדזשערז זענען געטאן מיט די C טיפּ לאַנג , און אַלע ינערלעך קאַמפּיאַטיישאַנז ינוואַלווינג פלאָוטינג-פונט זענען געטאן מיט די C- טיפּ טאָפּל . ווען קאַנווערטינג אַ שטריקל צו פלאָוטינג-פונט, עקספּאָנענט אָוווערפלאָו איז דיטעקטאַד און רעזולטאַטן אין אַ טקל טעות. פֿאַר קאַנווערזשאַן צו ינטעגער פון שטריקל, דיטעקשאַן פון לויפן איז דעפּענדס אויף די נאַטור פון עטלעכע רוטינז אין די היגע ביבליאָטעק C, אַזוי עס זאָל זייַן גערעכנט ווי אַנרילייאַבאַל. אין קיין פאַל, ינטעגראַטינג אָוווערפלאָו און ונטערפלאָו בכלל נישט דעטעקטעד רילייאַבלי פֿאַר ינטערמידייט רעזולטאַטן. פלאָוטינג-פונט לויפן און אַנדערפלאָו זענען דיטעקטאַד צו די גראַד פון די ייַזנוואַרג, וואָס איז בכלל שיין פאַרלאָזלעך.

קאָנווערסיאָן צווישן ינערלעך רעפּראַזיישאַנז פֿאַר ינטאַדזשער, פלאָוטינג-פונט, און שטריקל אַפּערענדס איז געטאן אויטאָמאַטיש ווי דארף. פֿאַר אַריטמעטיק רעכענונג, ינטאַדזשערז זענען געניצט ביז עטלעכע פלאָוטינג-פונט נומער איז באַקענענ, נאָך וואָס פלאָוטינג-פונט איז געניצט. למשל,

expr 5/4

קערט 1, בשעת

expr 5 / 4.0 expr 5 / ([שטריקל לענג "אַבקד"] + 0.0)

ביידע צוריקקומען 1.25. פלאָוטינג-פונט וואַלועס זענען שטענדיק אומגעקערט מיט אַ `` . '' אָדער אַ E אַזוי אַז זיי וועלן נישט קוקן ווי ינטאַדזשער וואַלועס. למשל,

expr 20.0 / 5.0

קערט 4.0 , נישט 4 .

סטרינג אָפּעראַטיאָנס

סטרינג וואַלועס קענען זיין געניצט ווי אַפּעראַנדז פון די קאַמפּעראַסאַנז פון אָפּערייטערז, כאָטש דער אויסדרוק אַסיסטאַנט טריינז צו טאָן קאַמפּעראַסאַנז ווי ינטאַדזשער אָדער פלאָוטינג-פונט ווען עס קענען. אויב איינער פון די אַפּערענדס פון אַ פאַרגלייַך איז אַ שטריקל און די אנדערע האט אַ נומעריק ווערט, די נומעריק אָפּעראַציע איז קאָנווערטעד צו אַ שטריקל ניצן די C ספּרינטף פֿאָרמאַט ספּעסיפיקאַטאָר % d פֿאַר ינטאַגרייטערז און % ג פֿאַר פלאָוטינג-פונט וואַלועס. פֿאַר בייַשפּיל, די קאַמאַנדז

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

ביידע צוריקקומען 1. דער ערשטער פאַרגלייַך איז געטאן ניצן ינטאַדזשער פאַרגלייַך, און די רגע איז געמאכט ניצן שטריקל פאַרגלייַך נאָך די רגע אָפּערע איז קאָנווערטעד צו די שטריקל 18 . ווייַל פון טקל ס טענדענץ צו מייַכל וואַלועס ווי נומערן ווי מעגלעך, עס איז ניט בכלל אַ גוט געדאַנק צו נוצן אָפּערייטערז ווי == ווען איר טאַקע ווילן שטריקל פאַרגלייַך און די וואַלועס פון די אָפּעראַנדס קען זיין אַרבאַטרערי; עס איז בעסער אין די קאַסעס צו נוצן די שטריקל באַפֿעל אַנשטאָט.

פאָרשטעלונג קאָנסידעראַטיאָנס

פאַרענדיקן אויסדרוקן אין ברייסאַז פֿאַר דער בעסטער גיכקייַט און די סמאָלאַסט סטאָרידזש באדערפענישן. דעם אַלאַוז די טקק ביטעקאָדע קאַמפּיילער צו דזשענערייט די בעסטער קאָד.

ווי דערמאנט אויבן, אויסדרוקן זענען סאַבסטאַטוטאַד צוויי מאָל: אַמאָל דורך די טקל פּאַרסער און אַמאָל דורך די עקספּר באַפֿעל. פֿאַר בייַשפּיל, די קאַמאַנדז

שטעלן אַ 3 שטעלן ב {$ אַ + 2} עקספּר $ b * 4

צוריקקומען 11, נישט אַ קייפל פון 4. דאָס איז ווייַל דער טקל פּאַרסער וועט ערשטער פאַרבייַטן $ אַ 2 פֿאַר די בייַטעוודיק b , דעמאָלט דער עקספּר באַפֿעל וועט אָפּשאַצן די אויסדרוק $ אַ + 2 * 4 .

רובֿ אויסדרוקן טאָן ניט דאַרפן אַ רגע קייַלעכיק פון סאַבסטיטיושאַנז. אָדער זיי זענען אַרייַנגערעכנט אין בראַסעס אָדער, אויב ניט, זייער בייַטעוודיק און באַפֿעל סובסטיטושאַנז טראָגן נומערן אָדער סטרינגס וואָס טאָן ניט זיך דאַרפן סאַבסטיטיושאַנז. אָבער, ווייַל אַ ביסל אַנבראַסעד אויסדרוקן דאַרפֿן צוויי ראָונדס פון סאַבסטיטיושאַנז, די ביעטעקאָדע קאַמפּיילער מוזן אַרויסגעבן נאָך ינסטראַקשאַנז צו האַנדלען מיט דעם סיטואַציע. די מערסט טייַער קאָד איז פארלאנגט פֿאַר ונבראַסעד אויסדרוקן אַז כּולל באַפֿעל סאַבסטיטיושאַנז. די אויסדרוקן מוזן זיין ימפּלאַמענאַד דורך דזשענערייטינג נייַ קאָד יעדער מאָל די אויסדרוק איז עקסאַקיוטיד.

Keywords

אַריטמעטיק, באָאָלעאַן , פאַרגלייַכן, אויסזען, פאַזי פאַרגלייַך

וויכטיק: ניצן די מענטש באַפֿעל ( % man ) צו זען ווי אַ באַפֿעל איז געוויינט אויף דיין באַזונדער קאָמפּיוטער.