Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22448

storage of bool in c under various compilers and optimization levels

$
0
0

trivial example program:

#include <stdio.h>main(){    bool tim = true;    bool rob = false;    bool mike = true;    printf("%d, %d, %d\n", tim, rob, mike);}

Using the gcc compiler it appearers, based on looking at the assembly output, that each bool is stored as a bit in individual bytes:

0x4004fc <main()+8>          movb      $0x1,-0x3(%rbp)0x400500 <main()+12>         movb      $0x0,-0x2(%rbp)0x400504 <main()+16>         movb      $0x1,-0x1(%rbp)

if, however, one turns optimization on, is there a level of optimization that will cause gcc to store these bools as bits in a byte or would one have to put the bools in a union of some bools and a short int? Other compilers? I have tried '-Os' but I must admit I can't make heads or tails of the output disassembly.


Viewing all articles
Browse latest Browse all 22448

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>