MIN() Makró C nyelven

Min Makro C Nyelven



A C nyelvű relációs műveleteket széles körben használják, és szinte minden programban megtalálhatók, amelyek ezen a nyelven íródnak. Több operátor is létezik ezen a nyelven – a leggyakrabban használtak egyenlőek ( = ), nagyobbak, mint ( > ), és kisebbek ( < ). Ezt a fajta műveletet gyakran alkalmazzák if-körülmények között. Például a bemeneti feltétel egy másik változóhoz vagy állandóhoz tartozó =, > vagy < változó értéke.

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.