Ställ in en variabel utan att använda aritmetisk, relationell eller villkorad operatör

Given three integers a b and c where c can be either 0 or 1. Without using any arithmetic relational and conditional operators set the value of a variable x based on below rules -
If c = 0   x   = a Else // Note c is binary   x   = b.  
Examples:
  Input:   a = 5 b = 10 c = 0;   Output:   x = 5   Input:   a = 5 b = 10 c = 1;   Output:   x = 10  
Lösning 1: Using arithmetic operators If we are allowed to use arithmetic operators we can easily calculate x by using any one of below expressions -
x = ((1 - c) * a) + (c * b) OR x = (a + b) - (!c * b) - (c * a); OR x = (a * !c) | (b * c);  
CPP
   #include          using     namespace     std  ;   int     calculate  (  int     a       int     b       int     c  )   {      return     ((  1     -     c  )     *     a  )     +     (  c     *     b  );      }   int     main  ()   {      int     a     =     5       b     =     10       c     =     0  ;          int     x     =     calculate  (  a       b       c  );      cout      < <     x      < <     endl  ;          return     0  ;   }   
Output:
5  
  Lösning 2: Without using arithmetic operators The idea is to construct an array of size 2 such that index 0 of the array stores value of variable 'a' and index 1 value of variable b. Now we return value at index 0 or at index 1 of the array based on value of variable c. CPP
   #include          using     namespace     std  ;   int     calculate  (  int     a       int     b       int     c  )   {      int     arr  []     =     {  a       b  };      return     *  (  arr     +     c  );   }   int     main  ()   {      int     a     =     5       b     =     10       c     =     1  ;          int     x     =     calculate  (  a       b       c  );      cout      < <     x      < <     endl  ;          return     0  ;   }   
Output:
10