8 bit e 1 byte, è una domanda valida da porre?

3

Ho visto queste domande nel passato della nostra scuola, e mi chiedo se questa è una domanda valida.

How big is bool in C and C++?

A) 1 bit

B) 4 bit

C) 8 bit

D) 1 byte

What is the smallest unit of memory C or C++ use?

A) 1 bit

B) 4 bit

C) 8 bit

D) 1 byte

La risposta ad entrambi sono D, ma sto pensando se questo è inappropriato.

EDIT: 1 byte non è necessariamente 8 bit su alcuni sistemi. Consulta questo post StackOverflow .

    
posta Shane Hsu 05.09.2013 - 12:01
fonte

3 risposte

10

AFAIK, nessuna risposta qui presentata è corretta. La dimensione di bool e _Bool non è vincolata a 1 byte (mi sembra di ricordare che esiste un vincolo in C che forza sizeof(_Bool)<=sizeof(short) che non ha un equivalente in C ++)

    
risposta data 05.09.2013 - 12:57
fonte
4

Direi che le risposte sono entrambe D) ma le domande lasciano un po 'a desiderare, per la prima come L'AProgrammer sottolinea che un bool potrebbe essere più grande di 1 byte , per la seconda domanda dovrebbe chiarire la più piccola unità di memoria indirizzabile ( consentono una struttura di più unità di memoria più piccole ma non sono indirizzabili )

per chiarire perché C) non è la risposta, potrebbero non esserci 8 bit in un byte in C || C ++

si spera che sia ovvio perché A) e B) non sono corretti

    
risposta data 05.09.2013 - 12:11
fonte
2

La dimensione di bool in std :: vector è di 1 bit.

Vector of bool

This is a specialized version of vector, which is used for elements of type bool and optimizes for space.

It behaves like the unspecialized version of vector, with the following changes:

  • The storage is not necessarily an array of bool values, but the library implementation may optimize storage so that each value is stored in a single bit.
  • Elements are not constructed using the allocator object, but their value is directly set on the proper bit in the internal storage.
  • Member function flip and a new signature for member swap.
  • A special member type, reference, a class that accesses individual bits in the container's internal storage with an interface that emulates a bool reference. Conversely, member type const_reference is a plain bool.
  • The pointer and iterator types used by the container are not necessarily neither pointers nor conforming iterators, although they shall simulate most of their expected behavior.

These changes provide a quirky interface to this specialization and favor memory optimization over processing (which may or may not suit your needs). In any case, it is not possible to instantiate the unspecialized template of vector for bool directly. Workarounds to avoid this range from using a different type (char, unsigned char) or container (like deque) to use wrapper types or further specialize for specific allocator types...

    
risposta data 05.09.2013 - 13:02
fonte

Leggi altre domande sui tag