|I think it's wierd that i have to say: if x and y is 0 then no division..|
On the contrary, if you want no division to occur when either of x or y is 0, you must not divide if x or y is 0
You use && when you want to evaluate whether "condition a is true and condition b is true". You use || when you want to evaluate whether "condition a is true or condition b is true."
|That's why for me it's much more logical to use || (or), because then it doesn't devides if just 1 of them is 0..|
You used or with inequality which, not surprisingly, leads to different results than using or with equality.
The original code you supplied (well, at least the second snippet) looks like:
if(y != 0 || x != 0)
// do division
// don't do division
In English: If y is not 0 or
if x is not 0, do division. The problem there of course is that x can be not 0 while y is 0, and the condition evaluates to true, because that's what we asked for.
Consider what the if statements look like for particular values of x and y when the expressions are replaced with the true or false value they evaluate to:
x = 0, y = 0
if ( y!=0 || x!=0 ) ----> if ( false || false ) ----> false
if ( y!=0 || x!=0 ) ----> if ( false || true ) ----> true
if ( y!=0 || x!=0 ) ----> if ( true || false ) ----> true
if ( y!=0 || x!=0 ) ----> if ( true || true ) ----> true