שפת C/פעולות חשבוניות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Atavory (שיחה | תרומות)
מאין תקציר עריכה
Atavory (שיחה | תרומות)
אין תקציר עריכה
שורה 96:
</div>
 
==הגדלה עצמית והקטנה עצמית==
==קידום והסגה==
===קידוםהגדלה עצמית===
נניח שאנו רוצים לקדם את x ב1. כבר ראינו שאפשר לרשום זאת כך:
<div style="text-align:left; direction:ltr;">
שורה 110:
</pre>
</div>
כשנגיע ל[[שפת C/תנאים ולולאות#לולאות|לולאות]], נראה שקידוםשהגדלה עצמית משתנה דווקא ב1 (כלומר, שהמשתנה מקבל את ערכו הקודם ועוד 1) היא פעולה נפוצה במיוחד. פעולה זו, קידוםהגדלה עצמית (increment) יכולה להיכתב כך:
<div style="text-align:left; direction:ltr;">
<pre>
שורה 122:
</pre>
</div>
(נעמוד על ההבדלים בין שתי הצורות ב[[שפת C/פעולות חשבוניות#קידוםהגדלה והסגהעצמית והקטנה עצמית לכתחילה ובדיעבד|כאן]].)
 
===הסגההקטנה עצמית===
 
באותו אופן כקידוםכהגדלה עצמית, ניתן להוריד 1 מערך משתנה כך:
<div style="text-align:left; direction:ltr;">
<pre>
שורה 138:
</pre>
</div>
===קידוםהגדלה והסגהעצמית והקטנה עצמית לכתחילה ובדיעבד===
לעתים, קיים ביטוי בו משתנה הן מקודם והן מוערך. נניח, לדוגמה, שx מכיל את הערך 3, ונתבונן בשורה:
<div style="text-align:left; direction:ltr;">
שורה 148:
* x מקודם ב1
* z מקבל ערך כלשהו
השאלה היא, אבל, מה קודם למה. אם קודם x מקודם, אז בסיום השורה, z יכיל את הערך 4. מצד שני, אם קודם z מקבל ערך, אז בסיום השורה, z יכיל את הערך 3 (כי x קודם ל4 רק אחרי שz קיבל את ערכו הקודם). לצורך כך מכילה שפת C הן קידוםהגדלה עצמית לכתחילה, והן קידוםהגדלה עצמית בדיעבד. משמעות קידוםהגדלה עצמית בדיעבד (post-increment)
<div style="text-align:left; direction:ltr;">
<pre>
שורה 154:
</pre>
</div>
היא הערך את x ורק אז קדם אותו. לעומת זאת, משמעות קידוםהגדלה עצמית לכתחילה (pre-increment)
<div style="text-align:left; direction:ltr;">
<pre>
שורה 160:
</pre>
</div>
היא קדם את x והערך את התוצאה. הדבר דומה להסגהלהקטנה עצמית בדיעבד (post-decrement)
<div style="text-align:left; direction:ltr;">
<pre>
שורה 166:
</pre>
</div>
לעומת הסגההקטנה עצמית לכתחילה
(pre-decrement)
<div style="text-align:left; direction:ltr;">