rdfs:comment
| - ב-Perl יש כמה אופרטורים מתמטיים: באופרטורים אלה ניתן להשתמש בין מספרים לבין מספרים, בין מספרים לבין משתנים בסיסיים, בין משתנים בסיסיים לבין מספרים, ובין משתנים בסיסיים לבין משתנים בסיסיים. אופרטורים מתמטיים נוספים, הפועלים על משתנים מסוג סקלר בלבד הם: פעולת האופרטורים האלה, הם כמו פעולתם ב-C. הם מגדילים או מקטינים ב-1 את המשתנה מסוג סקלר עליו הם פועלים. $x++; ++$x; שניהם יגדילו את $x ב-1, ו- $x--; --$x; שנים יקטינו את $x ב-1. אז מה ההבדל בין $x++ לבין ++$x? ההבדל הוא שבמקרה הראשון, קודם $x ייבחן, ואז יוגדל, ובשני הוא קודם יוגדל. ומה המשמעות של זה?
* $y
* =
* 5
* +
* ++
* $x
|
abstract
| - ב-Perl יש כמה אופרטורים מתמטיים: באופרטורים אלה ניתן להשתמש בין מספרים לבין מספרים, בין מספרים לבין משתנים בסיסיים, בין משתנים בסיסיים לבין מספרים, ובין משתנים בסיסיים לבין משתנים בסיסיים. אופרטורים מתמטיים נוספים, הפועלים על משתנים מסוג סקלר בלבד הם: פעולת האופרטורים האלה, הם כמו פעולתם ב-C. הם מגדילים או מקטינים ב-1 את המשתנה מסוג סקלר עליו הם פועלים. $x++; ++$x; שניהם יגדילו את $x ב-1, ו- $x--; --$x; שנים יקטינו את $x ב-1. אז מה ההבדל בין $x++ לבין ++$x? ההבדל הוא שבמקרה הראשון, קודם $x ייבחן, ואז יוגדל, ובשני הוא קודם יוגדל. ומה המשמעות של זה? את ההבדל אפשר לראות כשננסה שני ביטויים: $y=5 + $x++; $y=5 + ++$x; נניח ש-$x שווה 6. במקרה הראשון $y יהיה שווה ל-11, ואז $x ייהפך 7, ואילו במקרה השני, $x ייהפך ל-7, ואז $y יהיה 5+7, שזה 12. שימו לב, שבמקרה הראשון כל הרווחים מיותרים, אבל במקרה השני, הרווח ביו ה-+ הראשון לשני הוא חשוב. הפתרון כשהמחשב יגיע לביטוי $y=5+++$x; הוא יבצע את החלוקה הבאה:
* $y
* =
* 5
* ++
* +
* $x מה שייצור את המצב הזה: $y=(5++)+$x;, ובגלל ש-5++ הוא לא חוקי, כי אפשר להגדיל משתנים, אבל לא קבועים, המחשב יקפיץ שגיאה, והקוד לא יורץ (נסו וראו בעצמכם), ואילו כשהקוד כתוב $y=5+ ++$x;, המחשב מחלק את זה כך:
* $y
* =
* 5
* +
* ++
* $x וזה יתורגם כך: $y=5+(++$x);, שזה ביטוי חוקי.
|