The key is understanding if-statement scope: only the immediately following statement is controlled by the if. int i = 3; if (!i) i++; - !3 is 0 (false), so i++ doesn't execute. i++; now executes (unconditional), i becomes 4. if (i==3) i+=2; - 4 != 3 (false), so i+=2 doesn't execute. i+=2; now executes (unconditional), i becomes 6. printf prints 6. Option D is correct.