Νέα

Έξαλλο τριήμερο! Δώστε info.

  • Μέλος που άνοιξε το νήμα madoka
  • Ημερομηνία ανοίγματος
  • Απαντήσεις 398
  • Εμφανίσεις 12K
  • Tagged users Καμία
  • Βλέπουν το thread αυτή τη στιγμή 1 άτομα (0 μέλη και 1 επισκέπτες)
OP
OP
madoka

madoka

Μέλος
Εγγρ.
24 Ιουλ 2013
Μηνύματα
1.154
Like
0
Πόντοι
16
Απο δομές τι κανεις?

Δίνεται η δομή s :
struct {
       double a;
        union {
                char b[4];
                double c;
                  int i;
              } e;
       char f[4];
} s;
Άν οι τύποι char , double , int καταλαμβάνουν 1 , 8 και 4 bytes αντίστοιχα και επισης δεν υπάρχουν τρύπες αναμεσα
στα μέλη της δομής , ποιος θα ειναι ο χώρος που θα εκχωρήσει ένας μεταγλωτιστής της C για την s ?

Λοιπόν, έχουμε  για double a=8 bytes.
Για την union Θα πρέπει να βρούμε ποιο από τα συστατικά της πιάνει τον μεγαλύτερο χώρο. Η union έχει τη σημασία ότι μπορεί εκεί να βάλουμε είτε

char b[4];
double c;
int i;

Ένα από τα τρία θα μπει, δεν μπορείς να χρησιμοποιήσεις και τα 3 μαζί. Το  char b[4] έχει μέγεθος 4 bytes, αφού το char είναι ένα byte. To double c έχει μέγεθος 8 bytes και το int i μέγεθος 4 bytes.
Τέλος το   char f[4] θα πιάσει 4 bytes. Συνεπώς έχουμε 8 (gia double a) + 8 (gia union) + 4 (gia char f[4]) =20 bytes
για όλα, άρα το sizeof(s) θα είναι 20 bytes.

Ρε μπας και είναι καμιά δικιά σου και με έβαλες τώρα να στην πω;  :2funny:
 

Boldemort

Σεβαστός
Εγγρ.
4 Σεπ 2009
Μηνύματα
47.529
Κριτικές
12
Like
42
Πόντοι
1.220
Λοιπόν, έχουμε  για double a=8 bytes.
Για την union Θα πρέπει να βρούμε ποιο από τα συστατικά της πιάνει τον μεγαλύτερο χώρο. Η union έχει τη σημασία ότι μπορεί εκεί να βάλουμε είτε

char b[4];
double c;
int i;

Ένα από τα τρία θα μπει, δεν μπορείς να χρησιμοποιήσεις και τα 3 μαζί. Το  char b[4] έχει μέγεθος 4 bytes, αφού το char είναι ένα byte. To double c έχει μέγεθος 8 bytes και το int i μέγεθος 4 bytes.
Τέλος το   char f[4] θα πιάσει 4 bytes. Συνεπώς έχουμε 8 (gia double a) + 8 (gia union) + 4 (gia char f[4]) =20 bytes
για όλα, άρα το sizeof(s) θα είναι 20 bytes.

Ρε μπας και είναι καμιά δικιά σου και με έβαλες τώρα να στην πω;  :2funny:

Μπραβο. Σωστή απάντηση. Ποσο ειχες γραψει C?
 

Boldemort

Σεβαστός
Εγγρ.
4 Σεπ 2009
Μηνύματα
47.529
Κριτικές
12
Like
42
Πόντοι
1.220
μόνο 6, αλλά αφού C μαθαίνεις στα επόμενα προγραμματιστικά παλουκομαθήματα και όχι σε Introduction Programming.

Να σου βάλω και μια τελευταια αν και θα φαμε κραξιμο απο τους άλλους  :P

(ηδη καποιοι θα μας βριζουν απο μεσα τους)

Άν char *p="abc";

Ποιες απο τις παρακάτω συναρτήσεις ειναι έγκυρες? Να δείξετε την έξοδο που προκύπτει απο κάθε μια έγκυρη.
Γιατι όσες απομείνουν είναι μη έγκυρες?


(a) putchar(p);
(b) putchar(*p);
(c) puts(p);
(d) puts(*p);
 

baros

Ανώτερος
Εγγρ.
20 Ιαν 2010
Μηνύματα
82.937
Κριτικές
31
Like
13.637
Πόντοι
5.097
μπηκα να δω το εξαλλο τριημερο
και βλεπω εξισωσης προγραματισμου  :2funny:
τι μαλακες ειστε  :birdman:
 

LION7

Ανώτερος
Εγγρ.
26 Ιουλ 2007
Μηνύματα
30.790
Κριτικές
16
Like
10.337
Πόντοι
8.645
Να σου βάλω και μια τελευταια αν και θα φαμε κραξιμο απο τους άλλους  :P

(ηδη καποιοι θα μας βριζουν απο μεσα τους)

Άν char *p="abc";

Ποιες απο τις παρακάτω συναρτήσεις ειναι έγκυρες? Να δείξετε την έξοδο που προκύπτει απο κάθε μια έγκυρη.
Γιατι όσες απομείνουν είναι μη έγκυρες?


(a) putchar(p);
(b) putchar(*p);
(c) puts(p);
(d) puts(*p);

putcharas :grin:
 

baros

Ανώτερος
Εγγρ.
20 Ιαν 2010
Μηνύματα
82.937
Κριτικές
31
Like
13.637
Πόντοι
5.097
Αυτόν τον μήνα θα ανέβει Αθήνα ένας φίλος μου για να με δει  :grin: για κάνα τριήμερο/τετραήμερο. Το ένα βράδυ θα πάμε Nirvana. Για τα υπόλοιπα όμως δεν έχουμε σκεφτεί κάτι, τζίφος. Δώστε τις πιο τρελές σας ιδέες.  :booty:

Ένα θρεντ που όλοι(;;; ) περιμένατε(;;; ).  :dancing:
να σε ξεκωλιασει στο πουτσο  :birdman:
a=b
b=c
d=e
d+e=f
f=1/2 b
ποσο ισουτε το G  :birdman:
 

gl

Μέγας
Εγγρ.
6 Ιουλ 2009
Μηνύματα
129.571
Κριτικές
475
Like
505
Πόντοι
4.906
μπηκα να δω το εξαλλο τριημερο
και βλεπω εξισωσης προγραματισμου  :2funny:
τι μαλακες ειστε  :birdman:
στις τραβελοκωλοτρυπιδες εχει διαφορικο λογισμο και στα βουλγαροτραβελα αναλυση για τις μαυρες τρυπες
 

Boldemort

Σεβαστός
Εγγρ.
4 Σεπ 2009
Μηνύματα
47.529
Κριτικές
12
Like
42
Πόντοι
1.220
madoka μην τα τρεξεις στον compiler γιατι δεν εχει νοημα αμα θες κοιτα μονο το προτυπο των συναρτησεων putchar και puts. Τρεξιμο στον μεταγλωτιστη απαγορευεται!
 
OP
OP
madoka

madoka

Μέλος
Εγγρ.
24 Ιουλ 2013
Μηνύματα
1.154
Like
0
Πόντοι
16
Να σου βάλω και μια τελευταια αν και θα φαμε κραξιμο απο τους άλλους  :P

(ηδη καποιοι θα μας βριζουν απο μεσα τους)

Άν char *p="abc";

Ποιες απο τις παρακάτω συναρτήσεις ειναι έγκυρες? Να δείξετε την έξοδο που προκύπτει απο κάθε μια έγκυρη.
Γιατι όσες απομείνουν είναι μη έγκυρες?


(a) putchar(p);
(b) putchar(*p);
(c) puts(p);
(d) puts(*p);

(a) putchar(p); Αυτό δεν είναι έγκυρο, η putchar θέλει char, όχι δείκτη σε char.
(b) putchar(*p); Αυτό είναι έγκυρο, Θα εκτυπώσει τον χαρακτήρα στον οποίο δείχνει ο δείκτης p που είναι ο πρώτος χαρακτήρας του string "abc", άρα θα εκτυπώσει a.
(c) puts(p); Είναι έγκυρο και θα εκτυπώσει όλο το string abc.
(d) puts(*p); Δεν είναι έγκυρο, ίσως να γίνει compile, αλλά θα σκάσει στο τρέξιμο το πρόγραμμα πιθανότατα γιατί η puts εκτυπώνει διαδοχικά byte μνήμης μέχρι να βρει το byte που έχει μέσα την τιμή τερματισμού του string '0'. Λογικά είτε δεν θα βρει αυτήν την τιμή, είτε η θέση μνήμης που θα είναι η ascii τιμή του  'a' δεν θα είναι διαθέσιμη για το πρόγραμμα και έτσι θα σκάσει. Όταν γράφεις  puts(*p) είναι σαν να γράφεις puts('a') (αυτό δεν παίζει να τρέξει).

 

House of Fun

Ενεργό Μέλος
Εγγρ.
30 Ιαν 2009
Μηνύματα
36.816
Κριτικές
5
Like
46
Πόντοι
366
Πάνω που ειχαμε καυλώσει μας την εριξες ρε madoka.
 

Stories

Νέο!

Stories

Top Bottom