המרת טיפוסים חלק 1
חלק מהיחידה יסודות במסלול ה-C של Coddy. שיעור 13 מתוך 63.
המרת טיפוסים ב-C מאפשרת להמיר ערך מסוג נתונים אחד לאחר. הדבר שימושי כשצריך לבצע פעולות בין סוגי נתונים שונים.
יש שני סוגים עיקריים של המרת טיפוסים:
- המרה מרומזת (אוטומטית)
- המרה מפורשת (ידנית)
נתחיל בהמרה משתמעת:
המרה מרומזת מתבצעת באופן אוטומטי, למשל כשמקצים ערך מסוג נתונים קטן יותר למשתנה מסוג נתונים גדול יותר:
int num = 10;
double decimal_num;
// המרת טיפוס מרומזת מ־int ל־double
decimal_num = num;לאחר הרצת הקוד שלמעלה, הערך של decimal_num יהיה 10.0
ההמרה הזאת בטוחה, כי ערך מסוג double יכול לאחסן את כל הערכים האפשריים של int בלי לאבד נתונים.
מסלולי המרה מרומזת נפוצים:
- char → int → long → float → double
השלב מ־long ל־float עלול לגרום לאובדן דיוק: float לא יכול לאחסן כל ערך של long בדיוק, ולכן 123456789 הופך ל־123456792.0.
עכשיו נבחן המרה מפורשת:
המרה מפורשת מתבצעת באופן ידני על ידי הצבת סוג הנתונים שאליו רוצים להמיר בסוגריים לפני הערך שרוצים להמיר. השתמשו בה בעת המרה מסוג נתונים גדול יותר לקטן יותר, שבה עלול להתרחש אובדן נתונים:
double decimal_num = 5.65;
int num;
// המרת טיפוס מפורשת מ-double ל-int
num = (int)decimal_num;לאחר הרצת הקוד שלמעלה, הערך של num יהיה 5
שימו לב שהחלק העשרוני נקטע (ולא מעוגל) בעת המרה מ-double ל-int. התחביר להמרה מפורשת הוא:
(target_type) valueגם C הייתה מבצעת את ההמרה הזאת ללא ההמרה המפורשת: num = decimal_num; נותן את אותו 5. מכיוון שההמרה עלולה לגרום לאובדן נתונים, כתיבת ההמרה המפורשת הופכת אותה לגלויה ומיידעת את המהדר שידוע לך על אובדן הנתונים האפשרי.
אתגר
קלכתבו תוכנית ש:
- מכריזה על משתנה מטיפוס double בשם
resultומגדירה את ערכו ל-5.65 - מכריזה על משתנה מטיפוס int בשם
grade - משייכת את הערך של
resultל-gradeבאמצעות המרה מפורשת
השורה שמתחת לקוד שלכם מדפיסה את grade עם ההודעה "The grade is: ".
נסו בעצמכם
double result = 5.65;
int grade;
// השתמשו בהמרת טיפוס מפורשת כדי להמיר את result מטיפוס (double) לטיפוס grade (int)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
תרגלו בעצמכם: קומפיילר C אונליין