Lakshmi Sreekanth said:
My problem: I need to return 0 if number = 0 other wise return value
should be 1.
Condition: Only by using below operators, We should not use any loops
or if or switch or any thing
Legal ops: ! ~ & ^ | + << >>
Waiting for clue.
You have only one object to consider (number) and 9 operators (+ is
two, yes?) so you can get the answer by listing all the possibilities
in some logical order. I suggest some sort of "increasing
complexity":
No operators:
number
1 operator:
!number
~number
+number
number & number
number ^ number
number | number
number + number
number << number
number >> number
2 operators:
!!number
!~number
!+number
~!number
~~number
~+number
+!number
+~number
++number
!number & number
!number ^ number
!number | number
!number + number
!number << number
!number >> number
number & !number
number ^ !number
number | !number
number + !number
number << !number
number >> !number
...
number >> +number
3 operators:
!!!number
... [very long list]
+number >> +number
and so on. This list never ends, but you can presume that if there is
an answer it will crop up reasonably soon (hint: give up once you've
got to +number >> +number using the ordering above).
You don't say what type "number" has. If it has to work for a lot of
different types, you can cut this list down a lot. Working this way
may look tedious by you will learn a lot about how C's operators are
defined to work. Once you've done a few you'll be able to check them
very quickly.
Get extra credit by saying how many expressions there are in the list
for "n operators".