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

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

Δημοσ.

Μπορει καποιος να μου πει τι κανει στον παρακατω κωδικα το

*p++ = *p++ = 1;

;

 

Ευχαριστω

       static void Main(string[] args)
        {
            unsafe
            {
                int* fib = stackalloc int[100];
                int* p = fib;
                *p++ = *p++ = 1;

                for (int i = 2; i < 100; ++i, ++p)
                    *p = p[-1] + p[-2];
                
                for (int i = 0; i < 20; ++i)
                    Console.WriteLine(fib[i]);
            }
        }
Δημοσ.

Βάζει την τιμή 1 στα δύο πρώτα στοιχεί του fib...

 

Εναλλακτικα πως αλλιως μπορει να γραφει;

Πως θα μπορουσα να βαλω μια τιμη στο στοιχειο 10 του fib;

Δημοσ.

Υπάρχει λόγος που το κάνεις με unsafe?

Εναλακτικά 

 

int [] fib=new int[100];

fib[0]=fib[1]=1;

for(int i=2 i<20; i++)

    fib= fib[i-1]+fib[i-2];    

 

 

Καλύτερα long διοτι οι αριθμοί αυξάνονται πολύ απότομα.

  • Like 2
Δημοσ.

albNik δεν υπαρχει λογος που το κανω με unsafe απλως προσπαθω να μαθω.

Χωρις unsafe μπορω να το κανω αλλα μπερδευομαι με unsafe.

 

Εναλλακτικα πως αλλιως μπορει να γραφει εννοουσα να βαλω την τιμη 1 στα δυο πρωτα στοιχεια του fib με unsafe

Δηλ πως αλλιως μπορει να γραφει το *p++ = *p++ = 1;

 

και πως γινεται με unsafe παντα να βαλω μια τιμη στο στοιχειo 10 του fib;

Δημοσ.

Προσωπικά δεν μου έχει χρειαστεί η unsafe καθόλου σε c#. Goto έχω χρησιμοποιήσει 1-2 φορες B)

 

Επισης βάλε checked { }  για να πετάξει overflow exception Αλλιως θα βλεπεις αρνητικά fib.  

To fib του 90+ δεν χωράει ούτε σε long 2^64.



Αντε να δοκιμάσω μια unsafe

 p[0] = 1;  
 p[1] = 1;
 
 p += 10;
 p[0] = 1234;  //p[12]=1234   ειναι 0 αλλα δείχνει στο 12

Πιο unsafe τωρα

 *p = 1;
  p++;
 *p = 1;
  p += 9;
 *p = 1234;  //p[10]
Δημοσ.

albNik δεν υπαρχει λογος που το κανω με unsafe απλως προσπαθω να μαθω.

Χωρις unsafe μπορω να το κανω αλλα μπερδευομαι με unsafe.

 

 

WFT. Μάθε να προγραμματίζεις σωστά χωρίς να γράφεις μη ασφαλή κώδικα. Η μόνη χρήση του 17 χρόνια ως επαγγελματίας, είναι όταν γράφω interface ή manifest για κάποιο hardware. 

Δημοσ.

Δεν ξερω αν χανω αδικα την ωρα μου με unsafe αλλα δοκιμασα τον ιδιο κωδικα συμφωνα με αυτα εγραψες και οι κωδικες τωρα ειναι οι παρακατω. Το θεμα ειναι οτι εμφανιζουν και οι δυο διαφορετικα αποτελεσματα (τεραστια νουμερα) σε σχεση με τον πρωτο που ποσταρα που χρησιμοποιουσε το *p++ = *p++ = 1;

Τρεξε αν θελεις και εσυ τον πρωτο κωδικα που ποσταρα στην αρχη και μετα τους παρακατω για να το διαπιστωσεις.

       static void Main(string[] args)
        {
            unsafe
            {
                int* fib = stackalloc int[100];
                int* p = fib;
                // *p++ = *p++ = 1;
                p[0] = 1;
                p[1] = 1;
                
                for (int i = 2; i < 100; ++i, ++p)
                    *p = p[-1] + p[-2];
                
                for (int i = 0; i < 20; ++i)
                    Console.WriteLine(fib[i]);
            }
        }
        static void Main(string[] args)
        {
            unsafe
            {
                int* fib = stackalloc int[100];
                int* p = fib;
                // *p++ = *p++ = 1;
                *p = 1;
                p++;
                *p = 1;
                
                for (int i = 2; i < 100; ++i, ++p)
                    *p = p[-1] + p[-2];
                
                for (int i = 0; i < 20; ++i)
                    Console.WriteLine(fib[i]);
            }
        }



WFT. Μάθε να προγραμματίζεις σωστά χωρίς να γράφεις μη ασφαλή κώδικα. Η μόνη χρήση του 17 χρόνια ως επαγγελματίας, είναι όταν γράφω interface ή manifest για κάποιο hardware. 

 

Apoll προσπαθω να μαθω, δεν φτιαχνω προγραμμα χρησιμοποιωντας unsafe κωδικα. Μπορει να μη χρειαστει ποτε αλλα καλο ειναι να ξερω.

Δημοσ.

Μετα τα  

p[0]=1;

p[1]=1;

βάλε

p+=2;

 

 

Και στο δευτερο μετα το 

*p=1;

p++;

*p=1;

βαλε άλλο ένα

p++;

 

Για να προχωράει ο δεικτης.

Δημοσ.

Δεν ξερω αν χανω αδικα την ωρα μου με unsafe αλλα δοκιμασα τον ιδιο κωδικα συμφωνα με αυτα εγραψες

Σιγουρα χανεις τον χρονο σου με το fibonacci

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...