Q:

C++ program that behaves differently depending on a semicolon

Is it possible to write two legal C++ programs A and B such that I can get B from A by deleting (or moving) a single semicolon (at a token boundary) but A and B show different behavior when compiled and executed? 

A:

Sure. 
int main() {
    if (0) ; // try removing the semicolon here
        return 7;
}

Look at the return value.