Σχεσιακούς και λογικούς τελεστές

Σε σημειογραφία τελεστής σχέσηςκαι λογικός τελεστήςόρος συγγένειεςσημαίνει μια σχέση που μπορεί να υπάρχει μεταξύ δύο σημασιών και του όρου λογικός- η σχέση μεταξύ των λογικών τιμών "true" και "false". Και αφού οι σχεσιακές τελεστές δίνουν αληθές ή ψευδή αποτελέσματα, χρησιμοποιούνται συχνά μαζί με λογικούς τελεστές. Αυτός είναι ο λόγος που εξετάζονται μαζί.

Οι παρακάτω είναι οι σχεσιακόι τελεστές:

Οι τελεστές Boolean περιλαμβάνουν τα ακόλουθα:

Το αποτέλεσμα της εκτέλεσης ενός σχεσιακού ή λογικού τελεστή είναι μια boolean τιμή τύπου bool.

Γενικά, τα αντικείμενα μπορούν να συγκριθούν για ισότητα ή ανισότητα χρησιμοποιώντας τους σχεσιακούς τελεστές == και !=. Και οι τελεστές σύγκρισης, =, μπορούν να εφαρμοστούν μόνο σε τύπους δεδομένων που υποστηρίζουν μια σχέση παραγγελίας. Επομένως, οι σχεσιακοί τελεστές μπορούν να εφαρμοστούν σε όλους τους τύπους αριθμητικών δεδομένων. Αλλά οι τιμές bool μπορούν να συγκριθούν μόνο για ισότητα ή ανισότητα, καθώς οι τιμές true (true) και false (false) δεν ταξινομούνται. Για παράδειγμα, η σύγκριση true > false σε C# δεν έχει νόημα.

Εξετάστε ένα παράδειγμα προγράμματος που δείχνει τη χρήση σχεσιακών και λογικών τελεστών:

Χρήση του συστήματος. χρησιμοποιώντας System.Collections.Generic; χρησιμοποιώντας System.Linq; χρησιμοποιώντας System.Text; namespace ConsoleApplication1 ( class Program ( static void Main(string args) ( short d = 10, f = 12; bool var1 = true, var2 = false; if (d f) Console.WriteLine("d > f"); // Σύγκριση μεταβλητές var1 και var2 if (var1 & var2) Console.WriteLine("Αυτό το κείμενο δεν θα βγει"); if (!(var1 & var2)) Console.WriteLine("!(var1 & var2) = true"); εάν (var1 | var2) Console.WriteLine("var1 | var2 = true"); if (var1 ^ var2) Console.WriteLine("var1 ^ var2 = true"); Console.ReadLine(); ) ) )

Οι λογικοί τελεστές στο C# εκτελούν τις πιο συνηθισμένες λογικές πράξεις. Ωστόσο, υπάρχει μια σειρά από πράξεις που εκτελούνται σύμφωνα με τους κανόνες της τυπικής λογικής. Αυτές οι λογικές πράξεις μπορούν να κατασκευαστούν χρησιμοποιώντας τους λογικούς τελεστές που υποστηρίζονται στο C#. Επομένως, η C# παρέχει ένα σύνολο λογικών τελεστών που επαρκούν για την κατασκευή σχεδόν οποιασδήποτε λογικής πράξης, συμπεριλαμβανομένων των υπονοούμενων. ΕΠΙΠΤΩΣΕΙΣείναι μια δυαδική πράξη που αξιολογείται ως ψευδής μόνο εάν ο αριστερός τελεστής είναι αληθής και ο δεξιός τελεστής είναι ψευδής. (Η λειτουργία του υπονοούμενου αντικατοπτρίζει την αρχή ότι το αληθές δεν μπορεί να σημαίνει ψευδές.)

Η λειτουργία υπονοούμενων μπορεί να κατασκευαστεί με βάση έναν συνδυασμό λογικών τελεστών! και |:

Συντόμευση Boolean Operators

Το C# παρέχει επίσης ειδικά συντομεύτηκε, παραλλαγές των λογικών τελεστών AND και OR που έχουν σχεδιαστεί για την παραγωγή πιο αποτελεσματικού κώδικα. Ας το εξηγήσουμε αυτό με τα ακόλουθα παραδείγματα λογικών πράξεων. Εάν ο πρώτος τελεστής μιας πράξης λογικού AND είναι false, τότε το αποτέλεσμά του θα είναι ψευδές, ανεξάρτητα από την τιμή του δεύτερου τελεστή. Εάν ο πρώτος τελεστής της λογικής πράξης OR είναι αληθής, τότε το αποτέλεσμά του θα είναι αληθές ανεξάρτητα από την τιμή του δεύτερου τελεστή. Λόγω του γεγονότος ότι η τιμή του δεύτερου τελεστή σε αυτές τις πράξεις δεν χρειάζεται να υπολογιστεί, εξοικονομεί χρόνο και βελτιώνει την αποτελεσματικότητα του κώδικα.

συντομεύτηκε λογική λειτουργίαΚαι γίνεται με χειριστής &&, και τη συντομευμένη λογική πράξη OR - using χειριστής ||. Αυτοί οι συντομευμένοι λογικοί τελεστές αντιστοιχούν στους κανονικούς λογικούς τελεστές & και |. Η μόνη διαφορά μεταξύ ενός συντομευμένου λογικού τελεστή και ενός κανονικού είναι ότι ο δεύτερος τελεστής του αξιολογείται μόνο όπως απαιτείται.

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

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

Πίνακας 2 - λειτουργίες

Σημάδι λειτουργίας

Σκοπός της επέμβασης

Κλήση λειτουργίας

Επιλογή στοιχείου πίνακα

Επισήμανση ενός στοιχείου εγγραφής

Επισήμανση ενός στοιχείου εγγραφής

Λογική άρνηση

Αρνητική κατά bitwise

Αλλαγή πινακίδας

Αύξηση μονάδας

Μείωση κατά ένα

Λήψη διεύθυνσης

Επικοινωνία μέσω διεύθυνσης

Μετατροπή τύπου (δηλαδή (float) α)

Προσδιορισμός του μεγέθους σε byte

Πολλαπλασιασμός

Ορισμός του υπολοίπου της διαίρεσης

Πρόσθεση

Αφαίρεση

Μετατόπιση αριστερά

μετατόπιση δεξιά

Λιγότερο από

Λιγότερο ή ίσο

Περισσότερο από

Περισσότερο ή ίσο

Λογικό bitwise "AND"

Bitwise XOR

Λογικό bitwise "OR"

Λογική "ΚΑΙ"

Λογικό "OR"

Λειτουργία υπό όρους (τριμερής).

ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ

+=, - =, *=, /=, %=, <<=,
>>=, &=, |=, ^=

Δυαδικές πράξεις (για παράδειγμα, a *= b
(δηλαδή a = a * b), κ.λπ.)

Κόμμα λειτουργίας

Χειριστής στη γλώσσα C (C)

Για να εξαλειφθεί η σύγχυση στις έννοιες "λειτουργία" και "τελεστής", σημειώνουμε ότι ο χειριστής είναι η μικρότερη εκτελέσιμη μονάδα του προγράμματος. Υπάρχουν τελεστές παραστάσεων των οποίων η δράση είναι να αξιολογούν δεδομένες εκφράσεις (για παράδειγμα: a = sin(b)+c; j++;), τελεστές δήλωσης, σύνθετοι τελεστές, κενοί τελεστές, τελεστές ετικετών, τελεστές κύκλου κ.λπ. Ένα ερωτηματικό χρησιμοποιείται για να επισημάνει το τέλος μιας δήλωσης στο C (C). Μια σύνθετη πρόταση (ή μπλοκ), η οποία είναι ένα σύνολο λογικά σχετικών εντολών που τοποθετούνται μεταξύ ανοιγόμενων (() και κλεισίματος ()) σγουρά στηρίγματα ("αγκύλες χειριστή"), δεν ακολουθείται από ερωτηματικό. Σημειώστε ότι ένα μπλοκ διαφέρει από μια σύνθετη πρόταση από την παρουσία ορισμών στο σώμα του μπλοκ.

Χαρακτηριστικά των βασικών πράξεων της γλώσσας C (C)

Ας χαρακτηρίσουμε τις κύριες λειτουργίες της γλώσσας SI (C).

λειτουργία ανάθεσης

Αρχικά, εξετάστε ένα από αυτά - τον τελεστή εκχώρησης (=). Έκφραση της φόρμας

εκχωρεί την τιμή του x στο y. Ο τελεστής "=" μπορεί να χρησιμοποιηθεί πολλές φορές σε μία έκφραση, για παράδειγμα:

x=y=z=100;

Υπάρχουν ενιαίες και δυαδικές πράξεις. Ο πρώτος από αυτούς έχει έναν τελεστή και ο δεύτερος έχει δύο. Ας ξεκινήσουμε την εξέτασή τους με λειτουργίες που έχουν ανατεθεί στην πρώτη από τις ακόλουθες παραδοσιακές ομάδες:

Αριθμητικές πράξεις.

Λογικές και σχεσιακές πράξεις.

Λειτουργίες με bits.

Οι αριθμητικές πράξεις καθορίζονται από τα ακόλουθα σύμβολα (Πίνακας 2): +, -, *, /, % . Το τελευταίο από αυτά δεν μπορεί να εφαρμοστεί σε μεταβλητές πραγματικού τύπου. Για παράδειγμα:

a = b + c;
x = y - z;
r = t*v;
s = k / l;
p = q % w;

Λειτουργίες Boolean

Οι λογικές πράξεις μιας σχέσης προσδιορίζονται από τα ακόλουθα σύμβολα (βλ. Πίνακα 2): && ("AND"), || ("Ή"), ! ("ΟΧΙ"), >, >=,<, <= , = = (равно), != (не равно). Традиционно эти операции должны давать одно из двух значений: истину или ложь. В языке СИ (C)принято следующее правило: истина - это любое ненулевое значение; ложь - это нулевое значение. Выражения, использующие логические операции и операции отношения, возвращают 0 для ложного значения и 1 для истинного. Ниже приводится таблица истинности для логических операций.

Οι λειτουργίες bit μπορούν να εφαρμοστούν σε μεταβλητές των τύπων int, char και τις παραλλαγές τους (για παράδειγμα, long int). Δεν μπορούν να εφαρμοστούν σε μεταβλητές τύπων float, double, void (ή πιο πολύπλοκων τύπων). Αυτές οι λειτουργίες καθορίζονται από τα ακόλουθα σύμβολα: ~ (άρνηση bitwise),<< (сдвиг влево), >> (δεξιά μετατόπιση), & (κατά bit AND), ^ (μετατόπιση XOR), | (κατά bit "OR").

Παραδείγματα: αν a=0000 1111 και b=1000 1000 τότε

~a = 1111 0000,
ένα<< 1 = 0001 1110,
a >> 1 = 0000 0111,
a & b = 0000 1000,
a^b=10000111,
α | b = 1000 1111.

Η γλώσσα παρέχει δύο μη συμβατικούς τελεστές αύξησης (++) και μείωσης (--). Έχουν σχεδιαστεί για να αυξάνουν και να μειώνουν κατά ένα την τιμή του τελεστή. Οι τελεστές ++ και -- μπορούν να γραφτούν πριν ή μετά τον τελεστή. Στην πρώτη περίπτωση (++n ή --n), η τιμή του τελεστή (n) αλλάζει πριν χρησιμοποιηθεί στην αντίστοιχη παράσταση και στη δεύτερη περίπτωση (n++ ή n--) αφού χρησιμοποιηθεί. Εξετάστε τις ακόλουθες δύο γραμμές προγράμματος:

a = b + c++;
a1 = b1 + ++c1;

Έστω ότι b = b1 = 2, c = c1 = 4. Στη συνέχεια, αφού εκτελέσουμε τις πράξεις: a = 6, b = 2, c = 5, a1 = 7, b1 = 2, c1 = 5.

Εκφράσεις με μια άλλη μη παραδοσιακή τριμερή ή υπό όρους λειτουργία ?: χρησιμοποιούνται επίσης ευρέως. Στη φόρμουλα

y = a εάν το x δεν είναι μηδέν (δηλαδή αληθές), και y = b εάν το x είναι μηδέν (λάθος). Η ακόλουθη έκφραση

y = (a>b) ? α:β;

σας επιτρέπει να εκχωρήσετε την τιμή μιας μεγαλύτερης μεταβλητής (a ή b) στη μεταβλητή y, δηλ. y = max(a, b).

Μια άλλη διαφορά της γλώσσας είναι ότι μια έκφραση της μορφής a = a + 5; μπορεί να γραφτεί με άλλη μορφή: a += 5;. Αντί για το σύμβολο +, μπορούν επίσης να χρησιμοποιηθούν σύμβολα άλλων δυαδικών πράξεων (βλ. Πίνακα 2).

Άλλες λειτουργίες από τον πίνακα. 2 θα περιγραφεί στις επόμενες παραγράφους.

Οι βρόχοι οργανώνονται για να εκτελούν κάποια δήλωση ή ομάδα εντολών ορισμένες φορές. Υπάρχουν τρεις εντολές βρόχου στη γλώσσα C (C): for, while και do - while. Το πρώτο από αυτά είναι επίσημα γραμμένο ως εξής:

για (έκφραση_1; έκφραση_2; έκφραση_3) βρόχος_σώμα

Το σώμα του βρόχου είναι είτε μία πρόταση είτε πολλές εντολές που περικλείονται σιδερακια ΔΟΝΤΙΩΝ( ... ) (δεν υπάρχει ερωτηματικό μετά το μπλοκ). Οι εκφράσεις 1, 2, 3 περιέχουν μια ειδική μεταβλητή που ονομάζεται μεταβλητή ελέγχου. Με την τιμή του, ορίζεται η ανάγκη επανάληψης του κύκλου ή εξόδου από αυτόν.

Η Expression_1 εκχωρεί την αρχική τιμή της μεταβλητής ελέγχου, η έκφραση_3 την αλλάζει σε κάθε βήμα και η έκφραση_2 ελέγχει εάν έχει φτάσει στην οριακή τιμή που ορίζει την ανάγκη εξόδου από τον βρόχο.

για (i = 1; i< 10; i++)

για (ch = "a"; ch != "p";) scanf ("%c", &ch);

/* Ο βρόχος θα εκτελεστεί μέχρι το πληκτρολόγιο

Ο χαρακτήρας "p" δεν θα εισαχθεί */

Οποιαδήποτε από τις τρεις εκφράσεις στο για βρόχομπορεί να παραλειφθεί, αλλά το ερωτηματικό πρέπει να παραμείνει. Έτσι το for (; ;) (...) είναι ένας άπειρος βρόχος που μπορεί να βγει μόνο με άλλους τρόπους.

Ο ακόλουθος κανόνας υιοθετείται στη γλώσσα SI (C). Οποιαδήποτε έκφραση ανάθεσης που περικλείεται σε παρένθεση έχει την ίδια τιμή με αυτήν που έχει εκχωρηθεί. Για παράδειγμα, η παράσταση (a=7+2) έχει τιμή 9. Μετά από αυτό, μπορείτε να γράψετε μια άλλη έκφραση, για παράδειγμα: ((a=7+2)<10), которое в данном случае будет всегда давать истинное значение. Следующая конструкция:

((ch = getch()) == "i")

σας επιτρέπει να εισαγάγετε την τιμή της μεταβλητής ch και να δώσετε ένα αληθινό αποτέλεσμα μόνο όταν η εισαγόμενη τιμή είναι το γράμμα "i". Σε αγκύλες, μπορείτε να γράψετε πολλούς τύπους που συνθέτουν μια σύνθετη έκφραση. Για τους σκοπούς αυτούς, χρησιμοποιείται η λειτουργία κόμματος. Οι τύποι θα αξιολογηθούν από αριστερά προς τα δεξιά και ολόκληρη η έκφραση θα λάβει την τιμή του τελευταίου τύπου που αξιολογήθηκε. Για παράδειγμα, αν υπάρχουν δύο μεταβλητές τύπου char, τότε η έκφραση

z = (x = y, y = getch());

ορίζει τις ακόλουθες ενέργειες: η τιμή της μεταβλητής y εκχωρείται στη μεταβλητή x. Ένας χαρακτήρας εισάγεται από το πληκτρολόγιο και εκχωρείται στη μεταβλητή y. Το z παίρνει την τιμή του y. Οι παρενθέσεις χρειάζονται εδώ επειδή ο τελεστής κόμματος έχει χαμηλότερη προτεραιότητα από τον τελεστή εκχώρησης που είναι γραμμένος μετά τη μεταβλητή z. Ο τελεστής κόμματος χρησιμοποιείται ευρέως για την κατασκευή παραστάσεων βρόχου και σας επιτρέπει να αλλάζετε τις τιμές πολλών μεταβλητών ελέγχου παράλληλα.

Επιτρέπονται ένθετες κατασκευές, δηλ. το σώμα ενός βρόχου μπορεί να περιέχει άλλες δηλώσεις.

Η δήλωση while είναι επίσημα γραμμένη ως εξής:

ενώ (έκφραση) loop_body

Η παράσταση σε παρένθεση μπορεί να λάβει τιμή μη μηδενική (αληθής) ή μηδενική (ψευδή). Εάν είναι αληθές, τότε εκτελείται το σώμα του βρόχου και η έκφραση αξιολογείται ξανά. Εάν η έκφραση είναι ψευδής, τότε ο βρόχος while τελειώνει.

Η δήλωση do-while γράφεται επίσημα ως εξής:

do (loop_body) while (expression);

Η κύρια διαφορά μεταξύ των βρόχων while και do-while είναι ότι το σώμα σε έναν βρόχο do-while εκτελείται τουλάχιστον μία φορά. Το σώμα του βρόχου θα εκτελεστεί έως ότου η έκφραση σε παρένθεση αξιολογηθεί ως ψευδής. Εάν είναι false κατά την είσοδο στον βρόχο, τότε το σώμα του εκτελείται ακριβώς μία φορά.

Επιτρέπεται η ένθεση μερικών βρόχων σε άλλους, π.χ. Οι δηλώσεις για, while και do-while μπορεί να εμφανίζονται στο σώμα οποιουδήποτε βρόχου.

Οι νέες εντολές break και συνέχεια μπορούν να χρησιμοποιηθούν στο σώμα του βρόχου. Η εντολή break παρέχει μια άμεση έξοδο από τον βρόχο, η εντολή συνέχεια προκαλεί τον τερματισμό της επόμενης επανάληψης και την αρχή της επόμενης επανάληψης.

Τελεστές άλματος υπό όρους και άνευ όρων

Για να οργανωθούν άλματα υπό όρους και άνευ όρων σε ένα πρόγραμμα C (C), χρησιμοποιούνται οι ακόλουθες δηλώσεις: if - else, switch και goto. Το πρώτο είναι γραμμένο ως εξής:

if (check_condition) statement_1; else statement_2;

Εάν η συνθήκη στις παρενθέσεις αξιολογηθεί ως true, εκτελείται η εντολή_1, ενώ εάν η συνθήκη είναι false, η εντολή_2. Εάν πρέπει να εκτελεστούν πολλές εντολές αντί για μία, περικλείονται σε σγουρά άγκιστρα. Η δήλωση if μπορεί να μην περιέχει τη λέξη other.

Σε μια δήλωση if - else, οι άλλες δηλώσεις πρέπει να ακολουθούν αμέσως τις λέξεις-κλειδιά if και else. Εάν τουλάχιστον ένα από αυτά είναι μια πρόταση if, ονομάζεται ένθετο. Σύμφωνα με τη σύμβαση της γλώσσας C, η λέξη αλλιώς αναφέρεται πάντα στο πλησιέστερο, εάν αυτό προηγείται.

Η δήλωση διακόπτη σάς επιτρέπει να επιλέξετε μία από τις πολλές εναλλακτικές. Είναι γραμμένο με την ακόλουθη επίσημη μορφή:

διακόπτης (έκφραση)

περίπτωση σταθερά_1: δηλώσεις_1;

περίπτωση σταθερά_2: δηλώσεις_2;

........ ........

προεπιλογή: operators_default;

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

Για να σταματήσετε τους επόμενους ελέγχους μετά από μια επιτυχημένη επιλογή κάποιας επιλογής, χρησιμοποιείται η δήλωση break, η οποία παρέχει άμεση έξοδο από τον διακόπτη διακόπτη.

Οι ένθετες κατασκευές διακόπτη επιτρέπονται.

Εξετάστε τους κανόνες για την εκτέλεση ενός άλματος χωρίς όρους, οι οποίοι μπορούν να αναπαρασταθούν με την ακόλουθη μορφή:

goto ετικέτα?

Ετικέτα είναι οποιοδήποτε αναγνωριστικό ακολουθούμενο από άνω και κάτω τελεία. Η δήλωση goto προσδιορίζει ότι η εκτέλεση του προγράμματος πρέπει να συνεχιστεί από τη δήλωση που προηγείται της ετικέτας. Μια ετικέτα μπορεί να τοποθετηθεί πριν από οποιαδήποτε πρόταση στη συνάρτηση όπου βρίσκεται η αντίστοιχη πρόταση goto. Δεν χρειάζεται να ανακοινωθεί.

Το Turbo Debugger υποστηρίζει πλήρως τη σύνταξη έκφρασης της γλώσσας C (C). Η έκφραση αποτελείται από ένα μείγμα πράξεων, συμβολοσειρών, μεταβλητών

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

Υπάρχουν τρεις λογικές πράξεις στη C++:

  1. Η λογική λειτουργία AND && , γνωρίζουμε ήδη;
  2. Λογική λειτουργία Ή || ;
  3. Λογική λειτουργία ΟΧΙ ! ή λογική άρνηση.

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

Τώρα θα πρέπει να καταλάβετε τη διαφορά μεταξύ της λογικής πράξης AND και της λογικής πράξης OR, για να μην μπερδευτείτε στο μέλλον. Ήρθε η ώρα να εξοικειωθείτε με τον τύπο δεδομένων bool-λογικός. Αυτός ο τύπος δεδομένων μπορεί να λάβει δύο τιμές: true (true) και false (false). Η συνθήκη που πρέπει να ελεγχθεί στις δηλώσεις επιλογής έχει τον τύπο δεδομένων bool . Σκεφτείτε την αρχή του παρακάτω προγράμματος και όλα θα είναι ξεκάθαρα με όλες αυτές τις λογικές πράξεις.

// or_and_not.cpp: Καθορίζει το σημείο εισόδου για την εφαρμογή της κονσόλας. #include "stdafx.h" #include χρησιμοποιώντας namespace std? int main(int argc, char* argv) ( bool a1 = true, a2 = false; // δήλωση δυαδικών μεταβλητών bool a3 = true, a4 = false; cout<< "Tablica istinnosti log operacii &&" << endl; cout << "true && false: " << (a1 && a2) << endl // логическое И << "false && true: " << (a2 && a1) << endl << "true && true: " << (a1 && a3) << endl << "false && false: " << (a2 && a4) << endl; cout << "Tablica istinnosti log operacii ||" << endl; cout << "true || false: " << (a1 || a2) << endl // логическое ИЛИ << "false || true: " << (a2 || a1) << endl << "true || true: " << (a1 || a3) << endl << "false || false: " << (a2 || a4) << endl; cout << "Tablica istinnosti log operacii !" << endl; cout << "!true: " << (! a1) << endl // логическое НЕ << "!false: "<< (! a2) << endl; system("pause"); return 0; }

Γραμμές 9 και 10θα πρέπει να είστε σαφείς, καθώς οι μεταβλητές του τύπου αρχικοποιούνται εδώ bool . Και σε κάθε μεταβλητή εκχωρείται μια τιμήσωστό ή λάθος . Ξεκινώντας με 9η γραμμήκαι τελειώνει 20η, που δείχνει τη χρήση λογικών πράξεων. Το αποτέλεσμα του προγράμματος (βλ. Εικόνα 1).

Tablica istinnosti log operacii && true && false: 0 false && true: 0 true && true: 1 false && false: 0 Tablica istinnosti log operacii || αλήθεια || ψευδής: 1 ψευδής || true: 1 true || αλήθεια: 1 λάθος || λάθος: 0 !true: 0 !false: 1 Πατήστε οποιοδήποτε πλήκτρο για να συνεχίσετε. . .

Εικόνα 1 - Λογικές λειτουργίες C++

Πιθανώς, έχετε μια ερώτηση, "Τι είναι αυτά τα μηδενικά και τα μονά;". Εάν υπάρχει ερώτηση, τότε πρέπει να απαντηθεί. Απαντώ: «Το μηδέν είναι μια αναπαράσταση της λογικής τιμής false (false), αλλά τα one είναι η λογική τιμή true (true).» Επιτρέψτε μου να εξηγήσω εν συντομία ορισμένα σημεία. Σύνθετη συνθήκη με χρήση Boolean Καιείναι αληθές μόνο αν αληθεύουν και οι δύο απλές συνθήκες. Σε όλες τις άλλες περιπτώσεις, η συνθήκη είναι ψευδής. Μια σύνθετη συνθήκη που χρησιμοποιεί λογικό Ή είναι ψευδής μόνο εάν και οι δύο απλές συνθήκες είναι ψευδείς. Σε όλες τις άλλες περιπτώσεις, η συνθήκη είναι αληθής. Λογική άρνηση ΔΕΝείναι μια ενιαία πράξη και δεν συνδυάζει δύο συνθήκες, σε αντίθεση με τις λογικές πράξεις Καικαι Ή, οι οποίες είναι δυαδικές πράξεις. Η λογική άρνηση σάς επιτρέπει να αντιστρέψετε το νόημα της συνθήκης, κάτι που είναι πολύ βολικό σε ορισμένες περιπτώσεις. Μια συνθήκη με λογική άρνηση είναι αληθής εάν η ίδια συνθήκη είναι ψευδής χωρίς άρνηση και το αντίστροφο.

Διάφορες λειτουργίες μπορούν να εκτελεστούν σε αντικείμενα στη γλώσσα C:

  • εργασίες ανάθεσης·
  • Λειτουργίες σχέσεων·
  • αριθμητική;
  • σπαζοκεφαλιά;
  • λειτουργίες βάρδιας.

Το αποτέλεσμα της επέμβασης είναι ένας αριθμός.

Οι πράξεις μπορεί να είναι δυαδικές ή μονομερείς.
Οι δυαδικές πράξεις εκτελούνται σε δύο αντικείμενα, οι μοναδιασικές πράξεις σε ένα.

λειτουργία ανάθεσης

Η λειτουργία ανάθεσης συμβολίζεται με το σύμβολο = και εκτελείται σε 2 στάδια:

  • αξιολογείται η έκφραση στη δεξιά πλευρά.
  • το αποτέλεσμα εκχωρείται στον τελεστή στην αριστερή πλευρά:

αντικείμενο = έκφραση;

Παράδειγμα:

int a = 4; // στη μεταβλητή a εκχωρείται η τιμή 4
intb;
b = a + 2; // στη μεταβλητή b εκχωρείται η τιμή 6 που υπολογίζεται στη δεξιά πλευρά

Εάν τα αντικείμενα στο αριστερό και το δεξί τμήμα της λειτουργίας εκχώρησης έχουν διαφορετικούς τύπους, χρησιμοποιείται μια λειτουργία μετατροπής ρητού τύπου.
αντικείμενο = (τύπος)έκφραση;

Παράδειγμα:

float a = 241,5;
// Πριν υπολογιστεί το υπόλοιπο της διαίρεσης, το a μετατρέπεται σε ακέραιο τύπο
int b = (int )a % 2; // b = 1

πράξεις σχέσης

Βασικές πράξεις σχέσεων:

  • == ισοδύναμο - έλεγχος για ισότητα.
  • != όχι ίσο - ελέγξτε για ανισότητα.
  • < πιο λιγο;
  • > περισσότερο;
  • <= λιγότερο ή ίσο?
  • >= περισσότερο ή ίσο.

Οι σχεσιακές πράξεις χρησιμοποιούνται για την οργάνωση συνθηκών και κλάδων. Το αποτέλεσμα αυτών των πράξεων είναι 1 bit, η τιμή του οποίου είναι 1 εάν το αποτέλεσμα της πράξης είναι αληθές και 0 εάν το αποτέλεσμα της πράξης είναι ψευδές.

Αριθμητικές πράξεις

Βασικές δυαδικές πράξεις, ταξινομημένες κατά φθίνουσα σειρά προτεραιότητας:

  • * - πολλαπλασιασμός
  • / - διαίρεση
  • + - πρόσθεση;
  • - αφαίρεση?
  • % είναι το υπόλοιπο μιας διαίρεσης ακέραιου αριθμού.

Βασικές ενιαίες πράξεις:

  • ++ - αύξηση (αύξηση κατά 1).
  • -- - μείωση (μείωση κατά 1).
  • - αλλαγή πινακίδας.

Το αποτέλεσμα της αξιολόγησης μιας παράστασης που περιέχει πράξεις αύξησης ή μείωσης εξαρτάται από το πού βρίσκεται το πρόσημο της πράξης (πριν ή μετά από το αντικείμενο). Εάν η λειτουργία βρίσκεται πριν από το αντικείμενο, τότε η τιμή της μεταβλητής αλλάζει πρώτα σε 1 και, στη συνέχεια, αυτή η τιμή χρησιμοποιείται για την εκτέλεση των παρακάτω λειτουργιών. Εάν η επέμβαση ++ ή βρίσκεται μετά τη μεταβλητή, μετά εκτελείται πρώτα η λειτουργία και, στη συνέχεια, η τιμή της μεταβλητής αλλάζει σε 1.

Παράδειγμα :

Οι δυαδικές αριθμητικές πράξεις μπορούν να συνδυαστούν με τον τελεστή εκχώρησης:

  • αντικείμενο *= έκφραση; // αντικείμενο = αντικείμενο * έκφραση
  • αντικείμενο /= έκφραση; // αντικείμενο = αντικείμενο / έκφραση
  • αντικείμενο += έκφραση; // αντικείμενο = αντικείμενο + έκφραση
  • αντικείμενο -= έκφραση; // αντικείμενο = αντικείμενο - έκφραση
  • αντικείμενο %= έκφραση; // αντικείμενο = έκφραση αντικειμένου %

Λειτουργίες Boolean

Οι λογικές πράξεις χωρίζονται σε δύο ομάδες:

  • υποθετικός;
  • δυαδικά.

Οι λογικές πράξεις υπό όρους χρησιμοποιούνται συχνότερα σε λειτουργίες ελέγχου κατάστασης αν και μπορούν να εκτελεστούν σε οποιοδήποτε αντικείμενο. Αποτέλεσμα της υπό όρους λειτουργίας boolean:

  • 1 εάν η έκφραση είναι αληθής.
  • 0 αν η έκφραση είναι ψευδής.

Γενικά, όλες οι μη μηδενικές τιμές ερμηνεύονται ως αληθείς από τις δυαδικές πράξεις υπό όρους.

Βασικές λογικές πράξεις υπό όρους:

  • && - Και (δυαδικό) - απαιτείται ταυτόχρονη εκτέλεση όλων των λειτουργιών της σχέσης.
  • || - Ή (δυαδικό) - απαιτείται τουλάχιστον μία πράξη σχέσης.
  • ! - NOT (unary) - απαιτείται μη εκτέλεση της πράξης σχέσης.

Οι λογικές πράξεις bitwise λειτουργούν σε bit, καθένα από τα οποία μπορεί να λάβει μόνο δύο τιμές: 0 ή 1.

Βασικές λογικές πράξεις bitwise στη γλώσσα C:

  • & σύνδεσμος (λογικό ΚΑΙ) - μια δυαδική πράξη, το αποτέλεσμα της οποίας είναι 1 μόνο όταν και οι δύο τελεστές είναι απλοί (στη γενική περίπτωση, όταν όλοι οι τελεστές είναι απλοί).
  • | διαχωρισμός (λογικό OR) - μια δυαδική πράξη, το αποτέλεσμα της οποίας είναι 1 όταν τουλάχιστον ένας από τους τελεστές είναι 1.
  • ~ Η αντιστροφή (λογικό ΟΧΙ) είναι μια μονομερής πράξη, το αποτέλεσμα της οποίας είναι 0 εάν ο τελεστής είναι απλός και είναι 1 εάν ο τελεστής είναι μηδέν.
  • ^ Το XOR είναι μια δυαδική πράξη της οποίας το αποτέλεσμα είναι 1 εάν μόνο ένας από τους δύο τελεστές είναι 1 (γενικά, εάν υπάρχει περιττός αριθμός 1 στο σύνολο εισόδου των τελεστών).

Για κάθε bit, το αποτέλεσμα της λειτουργίας θα ληφθεί σύμφωνα με τον πίνακα.

ένα σι α&β α | σι α^β
0 0 0 0 1 0
0 1 0 1 1 1
1 0 0 1 0 1
1 1 1 1 0 0

Παράδειγμα :

1
2
3
4
5
6
7

ανυπόγραφο char a = 14; // a = 0000 1110
ανυπόγραφο char b = 9; // b = 0000 1001
ανυπόγραφο char c, d, e, f;
c = a&b; // c = 8 = 0000 1000
d = a | σι; // d = 15 = 0000 1111
e = ~a; // e = 241 = 1111 0001
f = a^b; // f = 7 = 0000 0111


Οι λειτουργίες bitwise σάς επιτρέπουν να ορίσετε και να επαναφέρετε μεμονωμένα bits ενός αριθμού. Για το σκοπό αυτό χρησιμοποιείται κάλυψη bit. Οι μάσκες που αντιστοιχούν στη ρύθμιση κάθε bit σε ένα byte παρουσιάζονται στον πίνακα

Κομμάτι Μάσκα
0 0x01
1 0x02
2 0x04
3 0x08
4 0x10
5 0x20
6 0x40
7 0x80

Για να ορίσετε ένα συγκεκριμένο bit, πρέπει να ορίσετε το αντίστοιχο bit της μάσκας σε 1 και να εκτελέσετε μια λειτουργία λογικής OR κατά bit με μια σταθερά που αντιπροσωπεύει τη μάσκα.

Η σύνταξη του τελεστή εκχώρησης SI είναι:
LValue = RValue;
Το LValue είναι το σημείο όπου θα γραφτεί η τιμή. Μόνο μια μεταβλητή μπορεί να λειτουργήσει ως τέτοιο αντικείμενο στο SI.
RValue είναι η τιμή της οποίας θα γράψουμε στο LValue. Και σε αυτόν τον ρόλο, αντικείμενα όπως:
μεταβλητός,
συνεχής,
χειριστής κλήσης λειτουργίας,
μαθηματική ή λογική έκφραση.
Παραδείγματα εργασιών
int a, b, c;
διπλό x, y;
a = 5; b = 4; c = a + b;
x=5,0; y = exp(x);

Βελτιωμένοι τελεστές ανάθεσης στο SI

Στο SI υπάρχουν οι λεγόμενοι βελτιωμένοι τελεστές ανάθεσης, μοιάζουν με αυτό:
LValue X= RValue; όπου X είναι μία πράξη από το σύνολο: + - * / % ^ & | >. αυτή είναι η αναλογία του τελεστή εκχώρησης:
LValue = LValue X RValue;
Για παράδειγμα:
a += b; ≡ a = a + b;
Στη γλώσσα C, όλες οι μαθηματικές πράξεις μπορούν να χωριστούν σε 2 ομάδες:
1. Μαθηματικές πράξεις για πραγματικούς και ακέραιους υπολογισμούς.
2. μαθηματικές πράξεις μόνο για υπολογισμούς ακεραίων.

Οι μαθηματικές πράξεις για πραγματικούς και ακέραιους υπολογισμούς της γλώσσας SI περιλαμβάνουν συνηθισμένες αριθμητικές πράξεις:
προσθήκη (+),
αφαίρεση (-),
πολλαπλασιασμός (*), διαίρεση (/).

Αντιστοίχιση τύπου αποτελέσματος από τύπους τελεστών

Χαρακτηριστικά της γλώσσας SI

Εξετάστε ένα από τα χαρακτηριστικά σε ένα παράδειγμα:
int a,b;
διπλό γ?
a = 10;
b = 4;
c = a / b; // c θα είναι ίσο με 2, αφού η λειτουργία δεν εκτελείται με διαίρεση, αλλά με διαίρεση ακέραιου αριθμού ή:
διπλό x = 1 / 3; // x θα είναι 0, για τον ίδιο λόγο όπως στο προηγούμενο παράδειγμα

Πράξεις για υπολογισμούς ακεραίων

Οι ακέραιοι υπολογισμοί περιλαμβάνουν:
η επιχείρηση λήψης του υπολοίπου μιας μεραρχίας,
λειτουργίες bitwise,
λειτουργίες βάρδιας,
πράξεις αύξησης και μείωσης.
Η πράξη λήψης του υπολοίπου της διαίρεσης (mod) είναι μια δυαδική πράξη και στη γλώσσα SI συμβολίζεται με το σύμβολο ποσοστού (%). Παράδειγμα υπολογισμού:
int a = 10, b = 3, c;
c = a % b; // το c θα είναι ίσο με 1

Λειτουργίες bitwise στο SI

Οι πράξεις bitwise της γλώσσας SI αντιπροσωπεύονται από τρεις δυαδικές και μία μοναδική πράξη. Οι δυαδικές λειτουργίες bitwise περιλαμβάνουν:
λειτουργία "AND" (&),
λειτουργία "OR" (|)
λειτουργία "Αποκλειστικό Ή" (^).

Εδώ είναι ο πίνακας αλήθειας για αυτές τις πράξεις:

πρώτος τελεστής δεύτερος τελεστής λειτουργία
και ή αποκλειστική ή
0 0 0 0 0
1 0 0 1 1
0 1 0 1 1
1 1 1 1 0

Λειτουργίες bitwise

Ο μονομερής τελεστής bitwise είναι ο τελεστής άρνησης, που υποδηλώνεται με τον χαρακτήρα tilde (~). Παράδειγμα:
ανυπόγραφο char a = 10, b; //a: 00001010 = 10
b = ~a; //b: 11110101 = 245

Λειτουργίες βάρδιας

Οι λειτουργίες Shift εκτελούν μια ψηφιακή μετατόπιση της ακέραιας τιμής που καθορίζεται στον πρώτο τελεστή, προς τα δεξιά (σύμβολο >>) ή προς τα αριστερά (σύμβολο<<) на указанное во втором операнде целое число бит. Пример:
ανυπόγραφο char a = 10, b, c; //a: 00001010 = 10
β = α<< 2; //b: 00101000 = 40
c = a >> 1; // γ: 00000101 = 5

Πράξεις αύξησης και μείωσης

Οι τελεστές αύξησης (σύμβολο ++) και μείωσης (σύμβολο -) είναι μοναδικοί και αυξάνουν και μειώνουν μια ακέραια τιμή κατά ένα, αντίστοιχα.
int a = 10, b, c;
b = ++a //προ-αύξηση b == 11
c = a++; //μετά αύξηση c == 11

Στις σύγχρονες γλώσσες προγραμματισμού (συμπεριλαμβανομένης της γλώσσας SI του προτύπου C99), αυτές οι λειτουργίες μπορούν επίσης να χρησιμοποιηθούν για πραγματικές τιμές. Παράδειγμα:
διπλό x = 12,5;
x++;
printf("%lf\n",x); //έξοδος: 13.5

Σχεσιακές πράξεις (συγκρίσεις)

Στις γλώσσες προγραμματισμού, οι σχεσιακές (συγκριτικές) τελεστές είναι δυαδικοί τελεστές που συγκρίνουν δύο τελεστές και επιστρέφουν το αποτέλεσμα της σύγκρισης ως δυαδική τιμή. Στη γλώσσα C, είναι σύνηθες να ερμηνεύονται οι λογικές τιμές TRUE και FALSE ως ακέραιες τιμές:
0 - ΛΑΘΟΣ, 1 - ΣΩΣΤΟ.
Ονομασία Όνομα
> Περισσότερο
< Πιο λιγο
>= Περισσότερο ή ίσο
<= Λιγότερο ή ίσο
== Ίσο
!= Όχι ίσα

Παραδείγματα
Μερικά παραδείγματα χρήσης τελεστών σύγκρισης:
int a=5, b=4, c=10, x, y;
x = a > b; //x == 1
y=c==a; //y == 0

Boolean πράξεις στο SI

Οι δυαδικές πράξεις είναι μοναδικές ή δυαδικές πράξεις που λειτουργούν με δυαδικές τιμές και επιστρέφουν μια δυαδική τιμή. Το σύνολο των λογικών λειτουργιών για διαφορετικές γλώσσες προγραμματισμού μπορεί να είναι διαφορετικό.

Λειτουργίες Boolean


Παραδείγματα λογικών πράξεων:
int a=1, b=0, c, d; //a - TRUE, b - FALSE
c = a || σι; // γ == 1
d = !b && a; //d == 1

Προτεραιότητες λειτουργίας

++, -- Λειτουργίες μετά την αύξηση και τη μείωση
() Κλήση συνάρτησης, ομαδοποίηση λειτουργιών
Πρόσβαση σε ένα στοιχείο πίνακα
-> Πρόσβαση σε ένα πεδίο δομής ή ένωσης μέσω ενός δείκτη
. Πρόσβαση σε ένα πεδίο δομής ή ένωσης
++, -- Πράξεις προ-αύξησης και μείωσης
! Λογικό "ΟΧΙ"
~ Δυαδική άρνηση (αναστροφή)
+, - Ενιαίο συν και πλην
& Λειτουργία λήψης διεύθυνσης
* Αποαναφορά δείκτη
μέγεθος του Χειριστής ταξινόμησης μεγέθους
(τύπος) Τύπος τελεστή μετατροπής
* Πολλαπλασιασμός
/ Διαίρεση
% Λαμβάνοντας το υπόλοιπο μιας διαίρεσης
+ Πρόσθεση
- Αφαίρεση
<<, >> Το bit μετατοπίζεται αριστερά και δεξιά
<, <=, >, >= Λειτουργίες σύγκρισης
==, != Λειτουργίες σύγκρισης
& Bitwise "και"
^ Bitwise XOR
| Bitwise "OR"
Λογική "ΚΑΙ"
|| Λογικό "OR"
?: Λειτουργία υπό όρους
= Απλός χειριστής ανάθεσης
*=, /=, %=, +=, -=, <<=, >>=, &=, ^=,|= Ενισχυμένοι χειριστές ανάθεσης
, Κόμμα

Χαρακτηριστικά των μεταφραστών


Η σειρά με την οποία αξιολογούνται τα ορίσματα της συνάρτησης όταν καλούνται δεν έχει οριστεί. Επομένως, η ακόλουθη πρόταση μπορεί να παράγει διαφορετικά αποτελέσματα όταν μεταφράζεται από διαφορετικούς μεταγλωττιστές:
printf("%d %lf\n", ++n, pow(2.0,n));
Το αποτέλεσμα θα εξαρτηθεί από το εάν το n αυξάνεται πριν ή μετά την κλήση στο πόου. Για να λύσετε το πρόβλημα, απλώς γράψτε το ως εξής: n++;
printf("%d %lf\n", n,pow(2.0,n));

Αυτόματο Σχήμα Καταναγκασμού Τύπου


1.Εάν κάποιος από τους τελεστές είναι του τύπου μακρύ διπλό, τότε το άλλο ανάγεται σε μακρύ διπλό.
2. Διαφορετικά, εάν κάποιος από τους χειριστές έχει τον τύπο διπλό, τότε το άλλο ανάγεται σε διπλό.
3.Διαφορετικά, εάν κάποιος από τους χειριστές έχει τον τύπο φλοτέρ, τότε το άλλο ανάγεται σε φλοτέρ.
4. Διαφορετικά, η επέκταση τύπου ακέραιου εκτελείται και για τους δύο τελεστές. τότε, εάν ένας από τους τελεστές είναι τύπου ανυπόγραφο μακρύ ενθ, τότε το άλλο μετατρέπεται σε ανυπόγραφο μακρύ ενθ.
5.Διαφορετικά, εάν ένας από τους τελεστές είναι τύπου μακρύς ενθ, και το άλλο είναι ανυπόγραφο ενθ, τότε το αποτέλεσμα εξαρτάται από το αν μακρύς ενθόλες τις αξίες ανυπόγραφο ενθ; αν ναι, τότε ένας τελεστής τύπου ανυπόγραφο ενθ
6.cast σε πληκτρολόγηση μακρύς ενθ; Εάν όχι, και οι δύο τελεστές μετατρέπονται σε ανυπόγραφο μακρύ ενθ.
7.Διαφορετικά, εάν ένας από τους τελεστές είναι τύπου μακρύς ενθ, τότε το άλλο ανάγεται σε μακρύς ενθ.
8.Διαφορετικά, και οι δύο τελεστές είναι τύπου ενθ.

Χειριστής Cast

int a = 15, b = 2; διπλό r = 0,0;
r = a / b; //r == 7,0

Τύπος χειριστή χύτευσης: (τύπος)έκφραση.
r = (διπλό) a / b; //Σωστά
r = (διπλό) (a / b); //Όχι σωστά

Λειτουργία υπό όρους


Υπάρχει ένας λεγόμενος τελεστής υπό όρους στη γλώσσα C, ο οποίος έχει την ακόλουθη σύνταξη:
κατάσταση? έκφραση #1: έκφραση #2;
Ένα παράδειγμα λειτουργίας υπό όρους. Είναι απαραίτητο να εισαγάγετε δύο πραγματικές τιμές από το πληκτρολόγιο και να εμφανίσετε το μέγιστο από αυτές τις τιμές στην οθόνη:
#περιλαμβάνω


  {
διπλό x,y;
scanf("%lf %lf",&x,&y);
διπλό μέγιστο = (x > y) ? x: y;
επιστροφή 0;
  }

Είναι απαραίτητο να εισαγάγετε τρεις πραγματικές τιμές από το πληκτρολόγιο και να εμφανίσετε το μέγιστο από αυτές τις τιμές:
#περιλαμβάνω

int main(int argc, char *argv)
  {
διπλό x, y, z;
printf("Εισαγάγετε τιμές: ");
scanf("%lf %lf %lf",&x,&y,&z);
διπλό μέγιστο = (x > y) ? ((x > z) ? x: z): ((y > z) ? y: z);
printf("Μέγιστη τιμή: %lf\n",max);
επιστροφή 0;
  }

Ένας πραγματικός αριθμός εισάγεται από το πληκτρολόγιο. Ανεβάστε έναν αριθμό στην τέταρτη δύναμη χρησιμοποιώντας μόνο δύο πολλαπλασιασμούς.
#περιλαμβάνω

int main(int argc, char *argv)
  {
διπλό α?
printf("Εισαγάγετε τιμή: ");
scanf("%lf",&a);
a*=(a*=a);
printf("Αποτέλεσμα: %lf\n",a);
επιστροφή 0;
  }

Μια τετραγωνική εξίσωση της μορφής δίνεται από τους συντελεστές Α, Β και Γ. Να προσδιορίσετε πόσες ρίζες έχει αυτή η εξίσωση.
#περιλαμβάνω

int main(int argc, char *argv)
  {
διπλό a,b,c;
printf("Εισαγάγετε τους συντελεστές A, B και C: ");
scanf("%lf %lf %lf",&a,&b,&c);
διπλό d = b*b-4*a*c;
int n = (δ< 0.0)?0:(d > 0.0)?2:1;
printf("Αριθμός ριζών: %d\n",n);
επιστροφή 0;
  }