Tell me the truth ...
-
This post did not contain any content.
Depending on the language
-
Depending on the language
And compiler. And hardware architecture. And optimization flags.
As usual, it's some developer that knows little enough to think the walls they see around enclose the entire world.
-
This post did not contain any content.
It's far more often stored in a word, so 32-64 bytes, depending on the target architecture. At least in most languages.
-
This post did not contain any content.
Are you telling me that no compiler optimizes this? Why?
-
Are you telling me that no compiler optimizes this? Why?
Well there are containers that store booleans in single bits (e.g.
std::vector<bool>
- which was famously a big mistake).But in the general case you don't want that because it would be slower.
-
It's far more often stored in a word, so 32-64 bytes, depending on the target architecture. At least in most languages.
No it isn't. All statically typed languages I know of use a byte. Which languages store it in an entire 32 bits? That would be unnecessarily wasteful.
-
And compiler. And hardware architecture. And optimization flags.
As usual, it's some developer that knows little enough to think the walls they see around enclose the entire world.
I don't think so. Apart from dynamically typed languages which need to store the type with the value, it's always 1 byte, and that doesn't depend on architecture (excluding ancient or exotic architectures) or optimisation flags.
Which language/architecture/flags would not store a bool in 1 byte?
-
I don't think so. Apart from dynamically typed languages which need to store the type with the value, it's always 1 byte, and that doesn't depend on architecture (excluding ancient or exotic architectures) or optimisation flags.
Which language/architecture/flags would not store a bool in 1 byte?
Apart from dynamically typed languages which need to store the type with the value
You know that depending on what your code does, the same C that people are talking upthread doesn't even need to allocate memory to store a variable, right?
-
I don't think so. Apart from dynamically typed languages which need to store the type with the value, it's always 1 byte, and that doesn't depend on architecture (excluding ancient or exotic architectures) or optimisation flags.
Which language/architecture/flags would not store a bool in 1 byte?
things that store it as word size for alignment purposes (most common afaik), things that pack multiple books into one byte (normally only things like bool sequences/structs), etc
-
Well there are containers that store booleans in single bits (e.g.
std::vector<bool>
- which was famously a big mistake).But in the general case you don't want that because it would be slower.
Why is this a big mistake? I’m not a c++ person
-
Why is this a big mistake? I’m not a c++ person
The mistake was that they created a type that behaves like an array in every case except for
bool
, for which they created a special magical version that behaves just subtly different enough that it can break things in confusing ways. -
The mistake was that they created a type that behaves like an array in every case except for
bool
, for which they created a special magical version that behaves just subtly different enough that it can break things in confusing ways.Could you provide an example?
-
This post did not contain any content.
This reminds me that I actually once made a class to store bools packed in uint8 array to save bytes.
Had forgotten that. I think i have to update the list of top 10 dumbest things i ever did.
-
Apart from dynamically typed languages which need to store the type with the value
You know that depending on what your code does, the same C that people are talking upthread doesn't even need to allocate memory to store a variable, right?
How does that work?
-
This post did not contain any content.
Wait till you here about every ascii letter. . .
-
Wait till you here about every ascii letter. . .
what about them?
-
what about them?
Ascii needs seven bits, but is almost always encoded as bytes, so every ascii letter has a throwaway bit.
-
Ascii needs seven bits, but is almost always encoded as bytes, so every ascii letter has a throwaway bit.
Let's store the boolean there then!!
-
This post did not contain any content.
Wait until you hear about alignment
-
No it isn't. All statically typed languages I know of use a byte. Which languages store it in an entire 32 bits? That would be unnecessarily wasteful.
It's not wasteful, it's faster. You can't read one byte, you can only read one word. Every decent compiler will turn booleans into words.