Jeban is right. Note that r is an automatic variable. It is not necessary to initialize an automatic variable at the time of declaration, but it should be initialized before usage, else a compiler error occurs. In contrast member variables can be used without initialization, in this case the default value of the member variable is used.
Regarding your second question, observe that | | is a shortcircuit Conditional OR operator. The second operand will not be evaluated if the first operand of this operator returns true. So the second expression j+=2 is not evaluated since the first operand t is true. Change t to false and notice the difference.
On the other hand | is a Boolean Logical Operator and both the operands are always evaluated.
Hope this helps
Thanks,
Dilip
[This message has been edited by Dilip Nedungadi (edited October 18, 2000).]
[This message has been edited by Dilip Nedungadi (edited October 18, 2000).]