Hát ez vicces. Viszont azt nem értem, hogy akkor a 0-án és 1-en kívüli állapotokat minek akarja megfeleltetni a C? Csak mert vizsgálatkor minden nem nullára triggerelődnek a feltételes vezérlők.
Mondjuk C-ben én mindig "úgy teszek", mintha a bool típusú változók tényleg azok lennének és nem csak átnevezett int-ek, azaz aritmetikai műveletet nem végzek vele, vagy ha igen, akkor előtte typecastolom, akkor is, ha tudom, hogy valójában tkp. ugyanarra typecastolom. Pusztán azért, hogy érthetőbb legyen, ami oda van írva és ne mágiának tűnjön. Mivel a zűrt itt a compiler okoskodása okozta, gondolom a typecast (char flags = ((char)bar) & 0x1) << 1;) ezen is segített volna. (Fixme?) Persze akkor nem derül ki a bug sem. :/