this post was submitted on 15 May 2025
        
      
      1155 points (98.6% liked)
      Programmer Humor
    27158 readers
  
      
      1178 users here now
      Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
 - No advertisements
 - Posts must be related to programming or programmer topics
 
        founded 2 years ago
      
      MODERATORS
      
    you are viewing a single comment's thread
view the rest of the comments
    view the rest of the comments
          
          
No, in C and C++ a bool is a byte.
All modern architectures (ARM, x86 RISC-V) support byte load/store instructions.
IIRC the stack pointer is usually incremented in 16-byte units. That's irrelevant though. If you store a single bool on the stack it would be 1 byte for the bool and 15 bytes of padding.
Again, no. I think you've sort of heard about this subject but haven't really understood it.
The requirement is that fields are naturally aligned (up to the machine word size). So a byte needs to be byte-aligned, 2-bytes needs to be 2-byte aligned, etc.
Padding may be inserted to achieve that but that is padding it doesn't change the size of the actual bool, and it isn't part of the bool.
They will be, if it fits the alignment requirements. Create a struct with 8 bools. It will take up 8 bytes no matter what your packing setting is. They even give an example:
They used
bytehere but it's the same forboolbecause a bool is one byte.I'm really surprised how common this misconception is.