../images/Emo6.gif
שני דברים. א. ה-prototype של printf הוא:
int printf (const char *, ...);
כיוון שהפונקציה מקבלת מחרוזת לפורמט, ומספר לא מוגבל של משתנים להדפסה. לכן, לא נעשה ה-cast לטיפוס המתאים. ב. בהרבה מאוד מערכות, הטיפול בין שלמים לבין נקודה צפה הוא שונה לגמרי (רגיסטרים שונים, לדוגמא). כשאתה אומר ל-Printf להדפיס int (לפי ה-format), הוא מחפש את המשתנה ברגיסטרים של ה-Integers, או קורא את המשתנים מהמחסנית כאילו הם int וכד'. אבל, אם המשתנה ששלחת הוא בעצם float, אז all bets are off. הוא יכול לקרוא זבל, לקרוא רגיסטר לא מאותחל ולזרוק הודעות מטורפות. ב-gcc יש warning על זה.