sheelamb,
Like I already said, to stay out of trouble, use only non-blocking assigned in edge sensitive always blocks, and thus use only C<=B if you want one flipflop. I see no advantage in your 2 statement description with the blocking assignments.
It is a general adopted coding rule to do like this. Yes, you can describe the same logic in different ways, but there are some preferred scenarios. If you write code like the most of the people do, it is easier to understand each other code. Also the number of bugs will reduce.
You can find a lot information if you google for verilog coding rules...
Stefaan