I'm using avr-gcc version 3.4.1 to compile C++. Here's the problem: bool george = true; if(george == true) { // never gets here } else { // always gets here } In other words, the expression (george == true) is always false. Isn't this a compiler bug? For whatever it's worth, the value of george is 0x01 and the value of true seems to be 0xff.