• mmddmm@lemm.ee
    link
    fedilink
    arrow-up
    159
    arrow-down
    5
    ·
    6 days ago

    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.

    • Lucien [he/him]@mander.xyz
      link
      fedilink
      arrow-up
      16
      arrow-down
      2
      ·
      6 days ago

      Fucking lol at the downvoters haha that second sentence must have rubbed them the wrong way for being too accurate.

    • timhh@programming.dev
      link
      fedilink
      arrow-up
      4
      arrow-down
      2
      ·
      5 days ago

      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?

      • brian@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        5 days ago

        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

        • timhh@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          1 day ago

          things that store it as word size for alignment purposes

          Nope. bools only need to be naturally aligned, so 1 byte.

          If you do

          struct SomeBools {
            bool a;
            bool b;
            bool c;
            bool d;
          };
          

          its 4 bytes.

          • brian@programming.dev
            link
            fedilink
            arrow-up
            1
            ·
            1 day ago

            sure, but if you have a single bool in a stack frame it’s probably going to be more than a byte. on the heap definitely more than a byte

      • mmddmm@lemm.ee
        link
        fedilink
        arrow-up
        1
        arrow-down
        1
        ·
        5 days ago

        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?

          • timhh@programming.dev
            link
            fedilink
            arrow-up
            2
            ·
            1 day ago

            I think he’s talking about if a variable only exists in registers. In which case it is the size of a register. But that’s true of everything that gets put in registers. You wouldn’t say uint16_t is word-sized because at some point it gets put into a word-sized register. That’s dumb.