nodreams.ct Δημοσ. 3 Φεβρουαρίου 2003 Δημοσ. 3 Φεβρουαρίου 2003 παιδιά σήμερα έγραφα c++ και έβαλε ένα ερώτημα.. έχουμε τον παρακάτω κώδικα και να πειτε τι κανει το while... > .... char str[]="geia!"; char* a=str; char* b; .... b=(char*)malloc(sizeof(str)); .... while( *b++ = *a++ ); ..... μολις το ειδα τα έχασα, 7 σύμβολα και 2 γράμματα μόνο! ασε που έχει και "=" μέσα.. <img src="http://www.insomnia.gr/ubbthreads/images/graemlins/tongue.gif" alt="" /> Έγραψα πως αντιγράφει τους 2 πινακες και το εξήγησα (ελπίζω).. αλλά θελω και μια δεύτερη γνώμη, καμιά ιδέα; Ευχαριστώ
tasoss Δημοσ. 4 Φεβρουαρίου 2003 Δημοσ. 4 Φεβρουαρίου 2003 gia.prota apola i metabliti c den dilonete pou8ena.an to dior8osis tote isos katalabo gia na sou pw alla malon prokite gia string copy. episis nomizo pos eprepe na exi == k oxi =
Γηρυόνης Δημοσ. 4 Φεβρουαρίου 2003 Δημοσ. 4 Φεβρουαρίου 2003 Από όσο θυμάμαι από C++ το ερωτηματικό στο τέλος του while βρόχου σημαίνει ότι ο βρόχος θα εκτελετεί μόνο μία φορά. ʼρα δε θα μεταβιβάσει όλο το περιεχόμενο. Δεύτερον, η μεταβλητή c που δηλώνεται; Δε την βλέπω κάπου στο πρόγραμμα. Θα έπρεπε λογικά να σου βγάλει μήνυμα σφάλματος.
Γηρυόνης Δημοσ. 4 Φεβρουαρίου 2003 Δημοσ. 4 Φεβρουαρίου 2003 tasoss said: episis nomizo pos eprepe na exi == k oxi = Θα μπορούσε να είναι και == αλλά το = σε while βρόχο σημαίνει εκχώρηση τιμών σε κάτι άλλο και όχι σύγκριση. Πιστεύω ότι αν η μεταβλητή c αλλάξει τότε εκχωρεί την πρώτη τιμή και μετά φεύγει από το while.
GrMikeD Δημοσ. 4 Φεβρουαρίου 2003 Δημοσ. 4 Φεβρουαρίου 2003 prwta apo ola to parapanw oute kan kanei compile. Ama exw madepsei swsta auto pou thes na grapseis, prepei stin deuteri seira na baleis: char str[]="geia!"; (i C++ den einai Java, e apoc?) kai stin teleutaia while( *b++ = *a++ ); padws einai poli tricky erwtisi kai kali. Gia na tin apadiseis prepei na exeis sto mualo sou oti o telestis ++ exei proteraiotita enadi tou * opote to statement tou while einai san to parakatw: while( *(b++) = *(a++) ); opote kathe fora: tin timi tis epomenis thesis mnimis tou b, tin kanei isi me tin timi tis epomenis thesis mnimis tou a mexri na brei null opote kai to while termatizei afou i anathesi bgazei null apotelesma. Opote auto pou kanei, einai na gemizei tin ARXIKES theseis mnimis tou b me tin timi tou a ("geia") alla, metakinei kiolas tous a kai b pointers opote meta deixnoun amesws meta auta ta "geia", diladi se asxetes theseis mnimis.
nodreams.ct Δημοσ. 4 Φεβρουαρίου 2003 Μέλος Δημοσ. 4 Φεβρουαρίου 2003 ʼντε μιχάλη που είσαι! Έχεις δίκιο ήθελα να γράψω: (βιασύνη!) char str[]="geia!"; while( *b++ = *a++ ); Εγώ έγραψα πως αντιγράφει τους πίνακες διότι αρχικά κάνει *b = *a (αφού τα o τελεστής a++,b++ επιστρέφει την τιμή a,b αντίστοιχα).μετα ξανακάνει έλεγχο το while (τωρα είναι a=a+1,b=b+1) συνεχίζει να αντγραφει στοιχεία του πίνακα ώσπου να φτάσει στον τελευταίο στοιχείο που θα ειναι 0 (πάντα το τελευταίο ειναι 0 στα strings) οπότε και θα βγεί απο το while.. σωστό;
tasoss Δημοσ. 4 Φεβρουαρίου 2003 Δημοσ. 4 Φεβρουαρίου 2003 sosto k poli sosta ta ipe k o grmike kapos den 8imame.kali epitixia stis e3etasis sou (an katalaba kala)
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.