Προς το περιεχόμενο

C++ εντολή switch & break/return


asxetoula

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα!

 

Προσπαθώ να γράψω ένα προγραμματάκι σε C++ και έχω την εξής απορία:

Χρειάζεται και η εντολή break σε κάθε case? Αρκεί η return έτσι δεν είναι;

 

bool sinartisi_3 (int metavliti)

{

switch (metavliti)

{

case 1 :

return sinartisi_1 (metavliti);

break; // Χρειάζεται;

case 2 :

return sinartisi_2 (metavliti);

default;

return false;

}

}

 

Και επίσης τα πρωτότυπα των συναρτήσεων είναι:

bool sunartisi_1 (int i);

bool sunartisi_2 (int j);

 

 

Ευχαριστώ πολύ : )

Δημοσ.
Το "break;" χρειάζεται, για τον λόγο που είπε και ο kamenopixel και αν δείς εδώ έχει μια πιο εκτενέστερη εξήγηση για το πως συντάσεται η switch.

 

Πάντως το Google είναι φίλος μας.

 

 

Γενικα ναι,χρειαζονται.Εκατσα και το ξαναετρεξα οπως το ειχε βαλει η asxetoula και δεν υπηρχε προβλημα.Λογω των return μαλλον τα οποια αποτελουν "εμμεσα" break.

Δημοσ.

Εξαρτάται από την χρήση της.

Διαβάστε με προσοχή εδώ το παράδειγμα και ιδιαίτερα αυτό:

"If betty is 1, then two lines are printed: betty=1 and betty=2. If betty is 2, then only one line is printed: betty=2. If betty=3, then only one line is printed: betty=3. If betty does not equal 1, 2, or 3, then "Not sure." is printed."

Δημοσ.

Η return δεν επαναφέρει τον έλεγχο στο σημείο όπου έγινε η κλήση της συνάρτησης στην οποία βρίσκεται; Ότι και να ακολουθεί μετά τη return, δε θα εκτελεστεί, άρα δεν έχει νόημα να προσθέσω τις break...

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

Μόλις τελείωσα το πρόγραμμα και λειτουργεί είτε με είτε χωρίς τις break στο συγκεκριμένο σημείο.

 

 

Κάτι ακόμα, μήπως ξέρετε τι σημαίνουν τα παρακάτω warnings:

 

 

>g++ -o ex main.cpp // main.cpp to programma poy elega pio panw

ld: warning: symbol `clog' has differing types:

(file /home/appl/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/libstdc++.a(stdstreams.o) type=OBJT; file /usr/lib/libm.so type=FUNC);

/home/appl/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/libstdc++.a(stdstreams.o) definition taken

ld: warning: symbol `clog' has differing types:

(file /home/appl/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/libstdc++.a(stdstreams.o) type=OBJT; file /usr/lib/libm.so type=FUNC);

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...