It has some garbage value. What does increasing that value by 1 give you? A garbage value. So what should: int a++; do? Nothing sensible.
Check if lines 24 and 25 succeed. Based on that initialize contextsNo to 0 or 1 on line 27. Check if line 33 is successful. Based on that, increment contextsNo or not.
The important thing is that the compiler identifies the line and point where there is a problem. Your compiler has done that for you.
As for it appearing absurd, well I've often had that opinion too. But, as you gain more experience, very often what previously seemed absurd starts to appear very clear and meaningful.
Also, the actual wording of the message may depend upon the compiler. Mine gives: [Error] expected initializer before '++' token
and that is absolutely precise in highlighting the exact problem with the code - but it may only be clear if you understand what it is saying.