1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precendence הוא איך לענות על השאלה, מה אנחנו צריכים לעשות פעולה ראשונה? 2 00:00:10,540 --> 00:00:14,250 בין אם פתרון משוואות במתמטיקה או לנתח שורות של קוד מחשב, 3 00:00:14,250 --> 00:00:17,230 יש כללים נוקשים של קדימות שאנו דבקים 4 00:00:17,230 --> 00:00:20,270 כך שכל המחשבים ואנשים יכולים לקבל את אותה התוצאה. 5 00:00:20,270 --> 00:00:24,710 >> ראשית, הכלל החשוב ביותר שיש לזכור, במיוחד בבדיקת באג, 6 00:00:24,710 --> 00:00:27,680 הוא שאנחנו תמיד עובדים מהסוגריים החיצוניים הכמוסים ביותר. 7 00:00:27,680 --> 00:00:31,120 שימוש בסוגריים נוספים יכול להיות טקטיקת ניפוי מועילה, 8 00:00:31,120 --> 00:00:34,640 אבל זה לא אימון טוב להמלטת הקוד שלך עם סוגריים מיותרים. 9 00:00:34,640 --> 00:00:38,220 קח את הזמן כדי ללמוד כללי קדימות מפעיל בסיסיים. 10 00:00:38,220 --> 00:00:42,450 >> הכלל השני הוא שכאשר מפעילים יש priorty שווה, 11 00:00:42,450 --> 00:00:44,820 אתה פשוט לפתור משמאל לימין. 12 00:00:44,820 --> 00:00:47,690 כאשר עוסקים במתמטיקה פשוטה אנחנו מתחילים עם סוגריים, 13 00:00:47,690 --> 00:00:52,110 אז לעשות כפל וחילוק, ולבסוף לעשות חיבור וחיסור. 14 00:00:52,110 --> 00:00:54,400 כפל והחילוק יש לה עדיפות, 15 00:00:54,400 --> 00:00:56,870 כי הם בעצם מבצעים את אותה פעולה. 16 00:00:56,870 --> 00:01:00,880 אחרי הכל החלוקה היא פשוט הכפלה בהיפוך של ערך. 17 00:01:00,880 --> 00:01:04,300 בדומה לכך, חיסור הוא פשוט מוסיף ערך שלילי. 18 00:01:04,300 --> 00:01:06,150 >> בואו נעשה דוגמה. 19 00:01:14,470 --> 00:01:18,300 בעקבות סדר הקדימות, תתחילו עם הסוגריים. תשע פחות 1. 20 00:01:18,300 --> 00:01:23,410 כך יהיה לנו 8. אז אנחנו יכולים לעבור לחטיבה והכפל. 21 00:01:23,410 --> 00:01:27,450 אנחנו נפתור משמאל לימין. אז 10 חלקים 2 הם 5. 22 00:01:27,450 --> 00:01:31,290 יש לנו 5 8 פעמים כאן, ושייתן לנו 40. 23 00:01:33,230 --> 00:01:35,410 לאחר מכן אנחנו עוברים לנושא הבא על סדר עדיפויות. 24 00:01:35,410 --> 00:01:38,730 אז אנחנו נשארים עם 3 ועוד 40 מינוס 1. 25 00:01:42,400 --> 00:01:43,700 שוב רק פתרון שמאל לימין, 26 00:01:43,700 --> 00:01:47,650 כי יש עדיפות שווה בין החיבור והחיסור. 27 00:01:47,650 --> 00:01:51,510 אנחנו יכולים לומר 3 ועוד 40 הם 43, מינוס 1 היא 42. זאת התשובה שלנו. 28 00:01:53,920 --> 00:01:56,730 >> ישנם 2 סוגים של מפעילי פחת ותוספת; 29 00:01:56,730 --> 00:02:01,000 צורת הקידומת, וצורת הסיומת. 30 00:02:01,000 --> 00:02:06,130 צורת הסיומת, אני + +, נמצא בשימוש נפוץ בלולאות, 31 00:02:06,130 --> 00:02:10,500 מה שאומר שהשווי הנוכחי משמש בביטוי, ולאחר מכן הוא מוגדל. 32 00:02:10,500 --> 00:02:14,240 אז הערך יהיה רק ​​שונה בפעם הבאה נעשה שימוש במשתנה. 33 00:02:14,240 --> 00:02:17,910 מצד השני, תוספת קידומת או ההפחתה במשמעות שהערך הנוכחי 34 00:02:17,910 --> 00:02:22,760 הוא להגדיל או מופחת ראשון, ולאחר מכן נעשה בו שימוש בביטוי. 35 00:02:22,760 --> 00:02:25,310 >> בואו ניקח דוגמה עם x המספר השלם. 36 00:02:25,310 --> 00:02:27,220 אנחנו נסדר את זה שווה ל 5. 37 00:02:27,220 --> 00:02:36,500 אם נשתמש מפעיל הסיומת על זה ואומר x + +, x על הקו הזה הוא עדיין 5. 38 00:02:36,500 --> 00:02:39,230 אם הייתי להדפיס אותו היינו מקבל את הערך 5. 39 00:02:39,230 --> 00:02:42,540 אבל הולך למעשה x1 קדימה שווה 6. 40 00:02:42,540 --> 00:02:48,770 אז כאן על x הקו הזה שווה ל 6, ואם אנחנו הדפסנו היינו מקבלים את הערך 6. 41 00:02:48,770 --> 00:02:57,380 עכשיו, אם הייתי מפעיל הקידומת, + + X, X הוא להגדיל ראשון, ולאחר מכן הערך משמש. 42 00:02:57,380 --> 00:03:00,110 אז זה שווה ל 7 בקו הזה. 43 00:03:00,110 --> 00:03:04,750 הגדלה כמובן 6-7, ואם היינו להדפיס אותו היינו מקבלים את הערך 7. 44 00:03:04,750 --> 00:03:09,160 >> ניואנס האחרון בprecendence שנבחנו עוסק בסימון מצביע. 45 00:03:09,160 --> 00:03:15,050 מפעיל dereference, הכוכב, יש עדיפויות על פני מפעילי מתמטיקה בסיסיות, 46 00:03:15,050 --> 00:03:18,550 אך לא מעל incement הסיומת ומפעילי הפחה. 47 00:03:18,550 --> 00:03:20,690 זה מוביל אותנו לדוגמא הסופית שלנו. 48 00:03:20,690 --> 00:03:24,500 בואו ניקח x השלם ולהגדיר אותו שווה ל 7. 49 00:03:24,500 --> 00:03:30,540 אנחנו גם עושים y מצביע ולהגדיר אותו שווה לכתובת של x. 50 00:03:30,540 --> 00:03:34,920 כך שכאשר אנו y dereference אנחנו צריכים לקבל את הערך 7. 51 00:03:34,920 --> 00:03:39,380 עכשיו בקו הזה של קוד, יש לנו מצב קצת מעורפל. 52 00:03:39,380 --> 00:03:44,310 האם אנו ביטול הפנית y הראשון, ולאחר מכן הגדלת הערך 7? 53 00:03:44,310 --> 00:03:48,300 או שאנחנו הגדלת המצביע ולאחר מכן ביטול הפניה זה? 54 00:03:48,300 --> 00:03:52,800 למעשה, בגלל מפעיל תוספת הסיומת יש קדימות על פני 55 00:03:52,800 --> 00:03:55,370 מפעיל dereference, אנחנו מנסים להגדיל את y המצביע, 56 00:03:55,370 --> 00:03:59,170 שהסכים להזיז את המצביע על ידי גודל של בתי int. 57 00:03:59,170 --> 00:04:03,040 בעיקרו של דבר נותן לנו כתובת בנקודה אחרת לגמרי בזיכרון, 58 00:04:03,040 --> 00:04:05,010 ואז אנחנו ביטול הפניה זה. 59 00:04:05,010 --> 00:04:07,350 אז זה קו מאוד חסר משמעות. 60 00:04:07,350 --> 00:04:10,250 אם אנחנו באמת רוצים להגדיל את הערך של 7, 61 00:04:10,250 --> 00:04:14,260 היינו צריכים לשים את מפעיל dereference עם Y בסוגריים. 62 00:04:14,260 --> 00:04:17,290 אז אוכל להגדיל אותו. 63 00:04:17,290 --> 00:04:21,089 אז בזמן שאנחנו לא יהיו הגדלת הערך x עם 2 לשורה האחרונה של קוד, 64 00:04:21,089 --> 00:04:23,380 בשורה האחרונה של קוד שהיית y dereference infact 65 00:04:23,380 --> 00:04:26,380 כדי לקבל את x הערך ולהגדיל את זה. 66 00:04:26,380 --> 00:04:29,540 היה משאיר אותנו עם ערך x שווה 8. 67 00:04:31,580 --> 00:04:33,580 >> הנה סיכום מהיר של כללי precendence שדברנו עליהם. 68 00:04:33,580 --> 00:04:37,210 נתחיל בסוגריים הפנימיים ביותר ולעבוד כלפי חוץ. 69 00:04:37,210 --> 00:04:41,210 לאחר מכן אנחנו עוברים למפעילי סיומת כמו i + + i או -. 70 00:04:41,210 --> 00:04:45,920 אז dereference וכתובת של מפעילים כמו הכוכב X או האמפרסנד x, 71 00:04:45,920 --> 00:04:50,260 ומפעילי הקידומת כמו + + i או - אני. 72 00:04:50,260 --> 00:04:54,920 לבסוף אנחנו עושים את פעולות חשבון הפשוטות כמו כפל, חילוק, מודולו. 73 00:04:54,920 --> 00:04:58,400 אז חיבור, חיסור. 74 00:04:58,400 --> 00:05:02,170 זה precendence. אני ירדן Jozwiak, וזה CS50. 75 00:05:04,160 --> 00:05:10,480 אנו נעביר את dereference ולהשתמש בכתובת ו-- איך אתה המשפט הזה? 76 00:05:12,380 --> 00:05:13,190 אני גמור. אוקיי.