[Powered by Google Translate] Precendence הוא איך לענות על השאלה, מה אנחנו צריכים לעשות פעולה ראשונה? בין אם פתרון משוואות במתמטיקה או לנתח שורות של קוד מחשב, יש כללים נוקשים של קדימות שאנו דבקים כך שכל המחשבים ואנשים יכולים לקבל את אותה התוצאה. ראשית, הכלל החשוב ביותר שיש לזכור, במיוחד בבדיקת באג, הוא שאנחנו תמיד עובדים מהסוגריים החיצוניים הכמוסים ביותר. שימוש בסוגריים נוספים יכול להיות טקטיקת ניפוי מועילה, אבל זה לא אימון טוב להמלטת הקוד שלך עם סוגריים מיותרים. קח את הזמן כדי ללמוד כללי קדימות מפעיל בסיסיים. הכלל השני הוא שכאשר מפעילים יש priorty שווה, אתה פשוט לפתור משמאל לימין. כאשר עוסקים במתמטיקה פשוטה אנחנו מתחילים עם סוגריים, אז לעשות כפל וחילוק, ולבסוף לעשות חיבור וחיסור. כפל והחילוק יש לה עדיפות, כי הם בעצם מבצעים את אותה פעולה. אחרי הכל החלוקה היא פשוט הכפלה בהיפוך של ערך. בדומה לכך, חיסור הוא פשוט מוסיף ערך שלילי. בואו נעשה דוגמה. בעקבות סדר הקדימות, תתחילו עם הסוגריים. תשע פחות 1. כך יהיה לנו 8. אז אנחנו יכולים לעבור לחטיבה והכפל. אנחנו נפתור משמאל לימין. אז 10 חלקים 2 הם 5. יש לנו 5 8 פעמים כאן, ושייתן לנו 40. לאחר מכן אנחנו עוברים לנושא הבא על סדר עדיפויות. אז אנחנו נשארים עם 3 ועוד 40 מינוס 1. שוב רק פתרון שמאל לימין, כי יש עדיפות שווה בין החיבור והחיסור. אנחנו יכולים לומר 3 ועוד 40 הם 43, מינוס 1 היא 42. זאת התשובה שלנו. ישנם 2 סוגים של מפעילי פחת ותוספת; צורת הקידומת, וצורת הסיומת. צורת הסיומת, אני + +, נמצא בשימוש נפוץ בלולאות, מה שאומר שהשווי הנוכחי משמש בביטוי, ולאחר מכן הוא מוגדל. אז הערך יהיה רק ​​שונה בפעם הבאה נעשה שימוש במשתנה. מצד השני, תוספת קידומת או ההפחתה במשמעות שהערך הנוכחי הוא להגדיל או מופחת ראשון, ולאחר מכן נעשה בו שימוש בביטוי. בואו ניקח דוגמה עם x המספר השלם. אנחנו נסדר את זה שווה ל 5. אם נשתמש מפעיל הסיומת על זה ואומר x + +, x על הקו הזה הוא עדיין 5. אם הייתי להדפיס אותו היינו מקבל את הערך 5. אבל הולך למעשה x1 קדימה שווה 6. אז כאן על x הקו הזה שווה ל 6, ואם אנחנו הדפסנו היינו מקבלים את הערך 6. עכשיו, אם הייתי מפעיל הקידומת, + + X, X הוא להגדיל ראשון, ולאחר מכן הערך משמש. אז זה שווה ל 7 בקו הזה. הגדלה כמובן 6-7, ואם היינו להדפיס אותו היינו מקבלים את הערך 7. ניואנס האחרון בprecendence שנבחנו עוסק בסימון מצביע. מפעיל dereference, הכוכב, יש עדיפויות על פני מפעילי מתמטיקה בסיסיות, אך לא מעל incement הסיומת ומפעילי הפחה. זה מוביל אותנו לדוגמא הסופית שלנו. בואו ניקח x השלם ולהגדיר אותו שווה ל 7. אנחנו גם עושים y מצביע ולהגדיר אותו שווה לכתובת של x. כך שכאשר אנו y dereference אנחנו צריכים לקבל את הערך 7. עכשיו בקו הזה של קוד, יש לנו מצב קצת מעורפל. האם אנו ביטול הפנית y הראשון, ולאחר מכן הגדלת הערך 7? או שאנחנו הגדלת המצביע ולאחר מכן ביטול הפניה זה? למעשה, בגלל מפעיל תוספת הסיומת יש קדימות על פני מפעיל dereference, אנחנו מנסים להגדיל את y המצביע, שהסכים להזיז את המצביע על ידי גודל של בתי int. בעיקרו של דבר נותן לנו כתובת בנקודה אחרת לגמרי בזיכרון, ואז אנחנו ביטול הפניה זה. אז זה קו מאוד חסר משמעות. אם אנחנו באמת רוצים להגדיל את הערך של 7, היינו צריכים לשים את מפעיל dereference עם Y בסוגריים. אז אוכל להגדיל אותו. אז בזמן שאנחנו לא יהיו הגדלת הערך x עם 2 לשורה האחרונה של קוד, בשורה האחרונה של קוד שהיית y dereference infact כדי לקבל את x הערך ולהגדיל את זה. היה משאיר אותנו עם ערך x שווה 8. הנה סיכום מהיר של כללי precendence שדברנו עליהם. נתחיל בסוגריים הפנימיים ביותר ולעבוד כלפי חוץ. לאחר מכן אנחנו עוברים למפעילי סיומת כמו i + + i או -. אז dereference וכתובת של מפעילים כמו הכוכב X או האמפרסנד x, ומפעילי הקידומת כמו + + i או - אני. לבסוף אנחנו עושים את פעולות חשבון הפשוטות כמו כפל, חילוק, מודולו. אז חיבור, חיסור. זה precendence. אני ירדן Jozwiak, וזה CS50. אנו נעביר את dereference ולהשתמש בכתובת ו-- איך אתה המשפט הזה? אני גמור. אוקיי.