Макрос MIN() на език C

Makros Min Na Ezik C



Релационните операции в C са широко използвани и могат да бъдат намерени в почти всяка програма, написана на този език. В този език има няколко оператора – най-често използваните са равно на ( = ), по-голямо от ( > ) и по-малко от ( < ). Този тип операция често се използва в if-условия. Например входното условие е стойността на променливата =, > или < към друга променлива или константа.

Тези релационни операции са много полезни. Но има случаи, в които трябва да знаем не само дали една променлива е по-голяма или по-малка от друга, но и да получим нейната стойност. Въпреки че това се прави лесно с изрази „if“ и прости релационни операции, езикът C предоставя също макроси с функции, които връщат максималната или минималната стойност между две променливи.

В тази статия за Linuxhint ще научите как да използвате макроса MIN(), за да намерите минималната стойност на две променливи. Ще ви покажем синтаксиса, метода за извикване и типа данни, които приема. След това ще разгледаме описание на това как работи и ще прегледаме израза и формулата, които този макрос прилага.







След това прилагаме наученото в практически пример, който включва кодови фрагменти и изображения, които показват как да намерим минимума с различни типове данни като входни данни за макроса MIN().



Синтаксис на макроса MIN() в езика C

МИН ( а , b )

Описание на макроса MIN() на език C



Макросът MIN() връща минималната стойност между променливите „a“ и „b“. Изразът, който се показва от макроса MIN() е условие true/false, при което се прилага релационна операция „<“ между променливите „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

невалиден основен ( ) {

вътр а = 32 ;

вътр b = 14 ;

вътр ° С ;

° С = МИН ( а , b ) ;

printf ( ' Минимумът е %i ' , ° С ) ;

}

След това виждаме изображение с компилирането и изпълнението на този код. Както виждаме, макросът MIN() връща стойността на „b“ в този случай.

Същото се случва, ако използваме променливите от типа double.

#include

#include

невалиден основен ( ) {

двойно а = 3 ;

двойно b = 1 ;

двойно ° С ;

° С = МИН ( а , b ) ;

printf ( ' Минимумът на двойните a и b е %f ' , ° С ) ;

}


Минимум и максимум с променливи с плаваща запетая

Макросът MIN() е полезна функция, но използването му не се препоръчва за променливи, които използват стойности с плаваща запетая. За да намерите минималната от този вид стойности, математическата библиотека предоставя набор от функции, който е дефиниран в заглавката „math.h“. Този набор се състои от функциите fmin(), fminf() и fminl(). Нека да разгледаме следния синтаксис за всяка от тези функции:

двойно fмин ( двойно х , двойно и ) ;
плавам fminf ( плавам х , плавам и ) ;
дълго двойно fminl ( дълго двойно х , дълго двойно и ) ;

Функцията fmin() работи с данни от тип double (8 байта) с плаваща запетая. Функцията fminf() работи с данни от тип float (4 байта), докато fminl() работи с данни от тип long double (16 байта). Освен това тези функции обработват нечисловите стойности (NaN).

Заключение

В тази статия за Linuxhint обяснихме всичко, което трябва да знаете, за да използвате макроса MIN(), за да намерите минималната стойност между две променливи. Разгледахме синтаксиса и дефиницията на този макрос, както и формулата, която прилага условие true/false за операция „по-малко от“ (<) между двете входни променливи.

След това приложихме теорията, която научихме, към практически пример, използвайки кодовите фрагменти и изображения, за да ви покажем как да работите с различни типове данни. Показахме ви и препоръчителните опции за работа с числа с плаваща запетая, където не се препоръчва използването на MIN().