Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α20.8 · Ανάθεση σε πεδία bit

Διάλεξη 20, διαφάνεια 12 · Δυσκολία ★★☆ · trace · Κεφάλαια: 20

Τι θα τυπώσει το πρόγραμμα;

#include <stdio.h>

typedef struct {
  unsigned char registered : 1;
  unsigned char year : 3;
  unsigned char grade : 4;
} status;

int main() {
  status st = {1, 1, 10};
  printf("Status: %u %u %u\n", st.registered, st.year, st.grade);
  st.year = 2;
  printf("Status: %u %u %u\n", st.registered, st.year, st.grade);
  st.year += 7;
  printf("Status: %u %u %u\n", st.registered, st.year, st.grade);
  return 0;
}

Υπόδειξη

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

Αριθμός στον οδηγό: Α20.8 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec20-bitfield-assign · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec20-bitfield-assign.html · Markdown (GitHub)