MIN() Μακροεντολή στη γλώσσα C

Min Makroentole Ste Glossa C



Οι σχεσιακές πράξεις στο C χρησιμοποιούνται ευρέως και μπορούν να βρεθούν σχεδόν σε κάθε πρόγραμμα που είναι γραμμένο σε αυτή τη γλώσσα. Υπάρχουν αρκετοί τελεστές σε αυτή τη γλώσσα – οι πιο συχνά χρησιμοποιούμενοι είναι ίσοι με ( = ), μεγαλύτεροι από ( > ) και μικρότεροι από ( < ). Αυτός ο τύπος λειτουργίας χρησιμοποιείται συχνά σε συνθήκες if. Για παράδειγμα, η συνθήκη εισαγωγής είναι η τιμή της μεταβλητής =, > ή < σε μια άλλη μεταβλητή ή σταθερά.

Αυτές οι σχεσιακές πράξεις είναι πολύ χρήσιμες. Υπάρχουν όμως περιπτώσεις που πρέπει να ξέρουμε όχι μόνο αν μια μεταβλητή είναι μεγαλύτερη ή μικρότερη από μια άλλη, αλλά και να πάρουμε την τιμή της. Αν και αυτό γίνεται εύκολα με εντολές 'if' και απλές σχεσιακές πράξεις, η γλώσσα C παρέχει επίσης στις μακροεντολές συναρτήσεις που επιστρέφουν τη μέγιστη ή την ελάχιστη τιμή μεταξύ δύο μεταβλητών.

Σε αυτό το άρθρο του Linuxhint, θα μάθετε πώς να χρησιμοποιείτε τη μακροεντολή MIN() για να βρείτε την ελάχιστη τιμή δύο μεταβλητών. Θα σας δείξουμε τη σύνταξη, τη μέθοδο κλήσης και τον τύπο δεδομένων που δέχεται. Στη συνέχεια, θα δούμε μια περιγραφή του τρόπου λειτουργίας της και θα εξετάσουμε την έκφραση και τον τύπο που εφαρμόζει αυτή η μακροεντολή.







Στη συνέχεια εφαρμόζουμε όσα μάθαμε σε ένα πρακτικό παράδειγμα που περιλαμβάνει τα αποσπάσματα κώδικα και τις εικόνες που δείχνουν πώς να βρείτε το ελάχιστο με διαφορετικούς τύπους δεδομένων ως εισόδους στη μακροεντολή MIN().



Σύνταξη της μακροεντολής MIN() στη γλώσσα C

MIN ( ένα , σι )

Περιγραφή της μακροεντολής 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 ;

ενθ σι = 14 ;

ενθ ντο ;

ντο = 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 bytes) με κινητή υποδιαστολή. Η συνάρτηση fminf() λειτουργεί με τα δεδομένα του τύπου float (4 bytes), ενώ η fminl() λειτουργεί με τα δεδομένα τύπου long double (16 bytes). Επίσης, αυτές οι συναρτήσεις επεξεργάζονται τις μη αριθμητικές τιμές (NaN).

συμπέρασμα

Σε αυτό το άρθρο του Linuxhint, εξηγήσαμε όλα όσα πρέπει να γνωρίζετε για να χρησιμοποιήσετε τη μακροεντολή MIN() για να βρείτε την ελάχιστη τιμή μεταξύ δύο μεταβλητών. Εξετάσαμε τη σύνταξη και τον ορισμό αυτής της μακροεντολής, καθώς και τον τύπο που εφαρμόζει μια συνθήκη true/false για μια πράξη 'λιγότερο από' (<) μεταξύ των δύο μεταβλητών εισόδου.

Στη συνέχεια εφαρμόσαμε τη θεωρία που μάθαμε σε ένα πρακτικό παράδειγμα χρησιμοποιώντας τα αποσπάσματα κώδικα και τις εικόνες για να σας δείξουμε πώς να εργάζεστε με διαφορετικούς τύπους δεδομένων. Σας δείξαμε επίσης τις προτεινόμενες επιλογές για την αντιμετώπιση αριθμών κινητής υποδιαστολής όπου δεν συνιστάται η χρήση της MIN().