MIN() מאקרו בשפת C

Min M Qrw Bspt C



פעולות יחסים ב-C נמצאות בשימוש נרחב וניתן למצוא אותן כמעט בכל תוכנה שנכתבת בשפה זו. ישנם מספר אופרטורים בשפה זו - הנפוצים ביותר בשימוש הם שווים ל- ( = ), גדול מ- ( > ), וקטן מ- ( < ). סוג זה של פעולה משמש לעתים קרובות בתנאי אם. לדוגמה, תנאי הקלט הוא הערך של המשתנה =, > או < למשתנה או קבוע אחר.

פעולות יחסים אלה שימושיות מאוד. אבל יש מקרים שבהם אנחנו צריכים לדעת לא רק אם משתנה אחד גדול או קטן מהאחר, אלא גם לקבל את ערכו. למרות שזה נעשה בקלות עם הצהרות 'אם' ופעולות יחסים פשוטות, שפת C מספקת גם פקודות מאקרו עם פונקציות המחזירות את הערך המקסימלי או המינימלי בין שני משתנים.

במאמר זה של Linuxhint, תלמד כיצד להשתמש במאקרו MIN() כדי למצוא את הערך המינימלי של שני משתנים. אנו נראה לך את התחביר, שיטת ההתקשרות וסוג הנתונים שהוא מקבל. לאחר מכן, נסתכל על תיאור כיצד זה עובד ונסקור את הביטוי והנוסחה שהמאקרו הזה מיישם.







לאחר מכן אנו מיישמים את מה שלמדנו בדוגמה מעשית הכוללת את קטעי הקוד והתמונות שמראים כיצד למצוא את המינימום עם סוגי נתונים שונים כקלט למאקרו MIN().



תחביר של המאקרו MIN() בשפת C

MIN ( א , ב )

תיאור של המאקרו MIN() בשפת C



המאקרו MIN() מחזיר את הערך המינימלי בין המשתנים 'a' ו-'b'. הביטוי שמוצג על ידי המאקרו MIN() הוא תנאי אמת/שקר שבו מופעלת פעולת יחסי '<' בין המשתנים 'a' ו-'b'. אם 'a' קטן מ-'b', 'a' מוחזר. אם 'b' קטן מ-'a', 'b' מוחזר.





#define MIN(a,b) (((a)<(b))?(a):(b))

המאקרו MIN() עובד עם כל סוגי הנתונים בכניסות וביציאות שלו עם הכלל היחיד ששני משתני הקלט חייבים להיות ערכים מספריים.

מאקרו זה מוגדר בכותרת 'param.h' בתיקיית 'sys'. כדי להשתמש בו, עלינו להכניס אותו לקוד שלנו באופן הבא:



#include

כיצד למצוא את המינימום בין שני משתנים שלמים עם המאקרו MIN()

בדוגמה זו, אנו יוצרים את המשתנים 'a' ו-'b' מסוג int שאליהם אנו מקצים ערך שרירותי וממנו נמצא את המינימום על ידי קריאה למאקרו MIN(). לאחר מכן נוציא את הערך המוחזר באמצעות הפונקציה printf() .

לשם כך, אנו כוללים את הכותרות 'stdio.h' ו-'param.h' ופותחים פונקציה main() מסוג void. בו, אנו מגדירים את המספרים השלמים 'a' ו-'b' ומקצים להם ערך אקראי. אנו גם מגדירים את המספר השלם 'c' לאחסון התוצאה.

לאחר מכן, אנו קוראים למקרו MIN() ומעבירים את 'a' ו-'b' כארגומנטים הקלט ואת 'c' כארגומנטים הפלט. אנו מציגים את התוצאה המוחזרת על ידי קריאה לפונקציה printf() . להלן הקוד לדוגמא זו:

#include

#include

בָּטֵל רָאשִׁי ( ) {

int א = 32 ;

int ב = 14 ;

int ג ;

ג = MIN ( א , ב ) ;

printf ( ' \n המינימום הוא %i \n ' , ג ) ;

}

לאחר מכן, אנו רואים תמונה עם הידור וביצוע של קוד זה. כפי שאנו יכולים לראות, המאקרו MIN() מחזיר את הערך של 'b' במקרה זה.

אותו דבר קורה אם אנו משתמשים במשתנים מהסוג הכפול.

#include

#include

בָּטֵל רָאשִׁי ( ) {

לְהַכפִּיל א = 3 ;

לְהַכפִּיל ב = 1 ;

לְהַכפִּיל ג ;

ג = MIN ( א , ב ) ;

printf ( ' \n המינימום של הכפילים a ו-b הוא %f \n ' , ג ) ;

}


מינימום ומקסימום עם משתני נקודה צפה

המאקרו MIN() הוא פונקציה שימושית, אך השימוש בו אינו מומלץ למשתנים המשתמשים בערכי הנקודה הצפה. כדי למצוא את המינימום של ערכים מסוג זה, ספריית המתמטיקה מספקת קבוצה של פונקציות המוגדרות בכותרת 'math.h'. קבוצה זו מורכבת מהפונקציות fmin(), fminf() ו-fminl(). הבה נסתכל על התחביר הבא עבור כל אחת מהפונקציות הללו:

לְהַכפִּיל fmin ( לְהַכפִּיל איקס , לְהַכפִּיל ו ) ;
לָצוּף fminf ( לָצוּף איקס , לָצוּף ו ) ;
ארוך לְהַכפִּיל fminl ( ארוך לְהַכפִּיל איקס , ארוך לְהַכפִּיל ו ) ;

הפונקציה fmin() פועלת על נתונים מסוג double (8 בתים) עם נקודה צפה. הפונקציה fminf() עובדת עם הנתונים מסוג float (4 בתים), בעוד fminl() עובדת עם הנתונים מסוג long double (16 בתים). כמו כן, פונקציות אלו מעבדות את הערכים הלא מספריים (NaN).

סיכום

במאמר זה של Linuxhint, הסברנו את כל מה שאתה צריך לדעת כדי להשתמש במאקרו MIN() כדי למצוא את הערך המינימלי בין שני משתנים. בדקנו את התחביר וההגדרה של מאקרו זה וכן את הנוסחה המחילה תנאי אמת/שקר עבור פעולת 'פחות מ' (<) בין שני משתני הקלט.

לאחר מכן יישמנו את התיאוריה שלמדנו על דוגמה מעשית באמצעות קטעי הקוד והתמונות כדי להראות לך איך לעבוד עם סוגים שונים של נתונים. הראנו לך גם את האפשרויות המומלצות להתמודד עם מספרי נקודה צפה שבה השימוש ב-MIN() אינו מומלץ.