
הטקסט המלא של הדקות הראשונות בהרצאה «Implicit Casting» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז הדבר הראשון שאנחנו הולכים לראות זאת המרה מרומזת implicit casting. בואו נראה איך זה מתבצע. ניקח את הדוגמה שראינו במצגת.
יש לנו moon distance, יש לנו משתנה מסוג long distances in space. לתוך moon distance אנחנו רוצים להכניס את המרחק מכדור הארץ לירח במטרים נניח, 384,000 קילומטר.
400 ואם אנחנו במטרים אז זה עוד שלושה אפסים ואנחנו רוצים לקחת את distances in space ולהכניס לתוכו את moon distance. בואו נראה שהקומפיילר מאשר את זה, שימו לב שאין כאן שום שגיאת קומפילציה.
בואו נציג את שניהם, moon distance ו-distances in space. נריץ ונראה שהקומפיילר הסכים לבצע את שניהם בלי שום בעיה.
אז מתי בעצם הקומפיילר מאשר לבצע המרה כזאת שנחשבת ל implicit casting? אז לרוב זה כמובן ברגע שיש לנו מידע נומרי, מספרים, שהקומפיילר יודע להמיר אותם ממספר א' למספר ב', רק כאשר אין לנו שום עיבוד מידע.
בואו נראה, אם יש לנו לדוגמה בית b שווה 100 ויש לנו int i שווה b כמובן שאין פה שום בעיה של עיבוד מידע ולכן הקומפיילר מסכים אם אנחנו לוקחים long l ומכניסים את i שום בעיה אם אנחנו לוקחים short s ומכניסים לדוגמה את i לתוכו כבר אנחנו רואים שהקומפיילר לא מאשר אנחנו צריכים בשביל
להבין את זה להיזכר בגדלים של המספרים בית זה בית אחד, אינט זה ארבעה בתים, לונג זה שמונה בתים, שורט זה שני בתים.
אי אפשר להכניס מספר שיכול להיכנס בתוך ארבעה בתים במשתנה שנחזיק שני בתים. הנקודה המעניינת שחשוב לראות כאן, זה שאפילו אם המספר עצמו כן יכול להיכנס את הקומפיילר זה לא מעניין.
הוא אומר כזה דבר, אני לא מעניין אותי שבאמת יש פה 100 ו-100 יכול להיכנס בתוך שורט. אם יש פה איזשהו משתנה שהגודל שלו בבתים יותר גדול אני לא מאשר לעשות את זה.
עכשיו זה די הגיוני מפני שכרגע זה 100 אבל אולי אנחנו נקלוט את זה איכשהו מהיוזר או מאיזשהו קובץ או משהו כזה. אז לכן הקומפיילר אומר תשמע אני לא מאשר לעשות את זה. עוד דוגמאות שיכולות להיות wd וניקח float f שווה d.
כמובן שהקומפיילר אומר רגע,