to reiterate why
if (c=='0'|| '1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')
will always evaluate to "true", is because c++ interprets zero as false, and all non-zero values as true. No char has an ascii value of zero, as binary zero in ascii is the NUL value. For instance
if (false || 1)
will always evaluate to "true", since the second statement, 1, counts as true. equally it could be any non-zero number.
if (false || -534.7)
will also evaluate to "true"
As far as the compiler is concerned, this is the same as
if (false || true)
only something like
if (false || 0)
will evaluate to "false", since zero counts as false. Since the char '0' has an ascii value of 48 in decimal, the statement
if (false || '0')
is equivalent to
if (false || 48)
which, as I explained above, is equivalent to
if (false || true)
which will, of course, evaluate to "true"