BEGINNERS: Compile time vs run-time errors

And lets not forget that some things that you think should generate a warning or error will not because it is valid syntax. Examine the if statement, it is clearly wrong as we are assigning not comparing. But as this is valid, the compiler and run time will be more than happy to execute this code.

int testMe = 12;

void setup() {
  // put your setup code here, to run once:

  Serial.begin(115200);
  if(testMe = 12)
    Serial.println("Matches");
  else
    Serial.println("Does Not Match");
}

void loop() {
  // put your main code here, to run repeatedly:

}