| оператор выполняет побитовое ИЛИ своих двух операндов (что означает, что обе стороны должны оценивать значение false, чтобы оно возвращало false), в то время как || оператор будет оценивать только второй оператор, если это необходимо.
http://msdn.microsoft.com/en-us/library/kxszd0kx (VS.71) .aspx
http://msdn.microsoft.com/en-us/library/6373h346 (VS.71) .aspx