Ezek a relációs műveletek nagyon hasznosak. De vannak esetek, amikor nem csak azt kell tudnunk, hogy az egyik változó nagyobb-e vagy kisebb-e a másiknál, hanem azt is, hogy megkapjuk az értékét. Bár ez könnyen megtehető „if” utasításokkal és egyszerű relációs műveletekkel, a C nyelv makrókat is biztosít olyan függvényekkel, amelyek két változó közötti maximális vagy minimális értéket adják vissza.
Ebből a Linuxhint cikkből megtudhatja, hogyan használhatja a MIN() makrót két változó minimális értékének meghatározásához. Megmutatjuk a szintaxist, a hívási metódust és az általa elfogadott adattípust. Ezután megnézzük a működési leírást, és áttekintjük a makró által alkalmazott kifejezést és képletet.
Ezután alkalmazzuk a tanultakat egy gyakorlati példában, amely tartalmazza a kódrészleteket és képeket, amelyek bemutatják, hogyan lehet megtalálni a minimumot különböző adattípusokkal a MIN() makró bemeneteként.
A MIN() makró szintaxisa C nyelvben
MIN ( a , b )A MIN() makró leírása C nyelven
A MIN() makró az „a” és „b” változók közötti minimális értéket adja vissza. A MIN() makró által megjelenített kifejezés egy igaz/hamis feltétel, ahol a „<” relációs művelet kerül alkalmazásra az „a” és „b” változók között. Ha „a” kisebb, mint „b”, „a” kerül visszaadásra. Ha „b” kisebb, mint „a”, „b” kerül visszaadásra.
#define MIN(a,b) (((a)<(b))?(a):(b))
A MIN() makró minden bemeneti és kimeneti adattípussal működik, az egyetlen szabály szerint mindkét bemeneti változónak numerikus értéknek kell lennie.
Ez a makró a „sys” mappa „param.h” fejlécében van meghatározva. Használatához a következőképpen kell beillesztenünk a kódunkba:
#include
Hogyan keressük meg a minimumot két egész változó között a MIN() makró segítségével
Ebben a példában létrehozzuk az „a” és „b” int típusú változókat, amelyekhez tetszőleges értéket rendelünk, és amelyekből a MIN() makró meghívásával megtaláljuk a minimumot. Ezután a printf() függvény segítségével kiadjuk a visszaadott értéket.
Ehhez hozzáadjuk az „stdio.h” és „param.h” fejlécet, és megnyitunk egy void típusú main() függvényt. Ebben definiáljuk az „a” és „b” egész számokat, és véletlenszerű értékkel rendeljük hozzájuk. Meghatározzuk a „c” egész számot is az eredmény tárolására.
Ezután meghívjuk a MIN() makrót, és bemeneti argumentumként „a” és „b”, kimeneti argumentumaként pedig „c”-t adunk meg. A visszaadott eredményt a printf() függvény meghívásával jelenítjük meg. A példa kódja a következő:
#include#include
üres fő- ( ) {
int a = 32 ;
int b = 14 ;
int c ;
c = MIN ( a , b ) ;
printf ( ' \n A minimum %i \n ' , c ) ;
}
Ezután látunk egy képet ennek a kódnak a fordításával és végrehajtásával. Amint látjuk, a MIN() makró ebben az esetben a „b” értékét adja vissza.
Ugyanez történik, ha a double típusú változókat használjuk.
#include#include
üres fő- ( ) {
kettős a = 3 ;
kettős b = 1 ;
kettős c ;
c = MIN ( a , b ) ;
printf ( ' \n Az a és b kettős minimuma %f \n ' , c ) ;
}
Minimum és Maximum lebegőpontos változókkal
A MIN() makró hasznos függvény, de használata nem javasolt lebegőpontos értékeket használó változók esetén. Az ilyen típusú értékek minimumának megtalálásához a matematikai könyvtár a „math.h” fejlécben definiált függvénykészletet biztosít. Ez a halmaz az fmin(), fminf() és fminl() függvényekből áll. Nézzük meg a következő szintaxist mindegyik függvényhez:
kettős fmin ( kettős x , kettős és ) ;úszó fminf ( úszó x , úszó és ) ;
hosszú kettős fminl ( hosszú kettős x , hosszú kettős és ) ;
Az fmin() függvény a double típusú (8 bájt) lebegőpontos adatokon dolgozik. Az fminf() függvény a float típusú adatokkal (4 bájt), míg az fminl() a long double típusú (16 bájt) adatokkal dolgozik. Ezenkívül ezek a függvények feldolgozzák a nem numerikus értékeket (NaN).
Következtetés
Ebben a Linuxhint cikkben mindent elmagyaráztunk, amit tudnia kell ahhoz, hogy a MIN() makró segítségével megtalálja a két változó közötti minimális értéket. Megnéztük ennek a makrónak a szintaxisát és definícióját, valamint azt a képletet, amely igaz/hamis feltételt alkalmaz a két bemeneti változó közötti „kisebb, mint” művelethez (<).
Ezután a tanult elméletet gyakorlati példára alkalmaztuk a kódrészletek és képek segítségével, hogy megmutassuk, hogyan kell dolgozni különböző típusú adatokkal. Megmutattuk a javasolt lehetőségeket is a lebegőpontos számok kezelésére, ahol a MIN() használata nem javasolt.