Implementando el operador ternario sin ninguna declaración condicional

Cómo implementar el operador ternario en C++ sin usar declaraciones condicionales.
En la siguiente condición: a ? b: c 
Si a es verdadero, b será ejecutado. 
De lo contrario, se ejecutará c.
Podemos asumir a, b y c como valores.
 

1. Usando el Operador Binario

Podemos codificar la ecuación como: 
Resultado = (!!a)*b + (!a)*c 
En la ecuación anterior, si a es verdadera, el resultado será b. 
De lo contrario, el resultado será c.
 

C++

// CPP code to implement ternary operator
#include <bits/stdc++.h>
 
// Function to implement ternary operator without
// conditional statements
int ternaryOperator(int a, int b, int c)
{
    // If a is true, we return (1 * b) + (!1 * c) i.e. b
    // If a is false, we return (!1 * b) + (1 * c) i.e. c
    return ((!!a) * b + (!a) * c);
}
 
// Driver code
int main()
{
    int a = 1, b = 10, c = 20;
     
    // Function call to output b or c depending on a
    std::cout << ternaryOperator(a, b, c) << '\n';
 
    a = 0;
     
    // Function call to output b or c depending on a
    std::cout << ternaryOperator(a, b, c);
     
    return 0;
}

Python 3

# Python 3 code to implement ternary operator
 
# Function to implement ternary operator
# without conditional statements
def ternaryOperator( a, b, c):
     
    # If a is true, we return
    # (1 * b) + (!1 * c) i.e. b
    # If a is false, we return
    # (!1 * b) + (1 * c) i.e. c
    return ((not not a) * b + (not a) * c)
 
# Driver code
if __name__ == "__main__":
 
    a = 1
    b = 10
    c = 20
     
    # Function call to output b or c
    # depending on a
    print(ternaryOperator(a, b, c))
 
    a = 0
     
    # Function call to output b or c
    # depending on a
    print(ternaryOperator(a, b, c))
     
# This code is contributed by ita_c

PHP

<?php
// PHP code to implement
// ternary operator
 
// Function to implement
// ternary operator without
// conditional statements
function ternaryOperator($a, $b, $c)
{
     
    // If a is true, we return
    // (1 * b) + (!1 * c) i.e. b
    // If a is false, we return
    // (!1 * b) + (1 * c) i.e. c
    return ((!!$a) * $b + (!$a) * $c);
}
 
    // Driver code
    $a = 1;
    $b = 10;
    $c = 20;
     
    // Function call to output
    // b or c depending on a
    echo ternaryOperator($a, $b, $c) ,"\n";
 
    $a = 0;
     
    // Function call to output b
    // or c depending on a
    echo ternaryOperator($a, $b, $c);
     
// This code is contributed by jit_t.
?>

Javascript

<script>
 
// Javascript code to implement
// ternary operator
     
    // Function to implement
    // ternary operator without
    // conditional statements
    function ternaryOperator(a,b,c)
    {
        // If a is true,
        // we return (1 * b) + (!1 * c) i.e. b
        // If a is false,
        // we return (!1 * b) + (1 * c) i.e. c
         
        return ((!!a) * b + (!a) * c);
    }
     
    // Driver code
    let a = 1, b = 10, c = 20;
    // Function call to output b or c depending on a
    document.write( ternaryOperator(a, b, c)+"<br>");
     
    a = 0;
    // Function call to output b or c depending on a
    document.write( ternaryOperator(a, b, c)+"<br>");
     
    // This code is contributed by avanitrachhadiya2155
     
</script>
Producción

10
20

2. Usando array

int arr[] = { b, a };

Podemos devolver el valor presente en el índice 0 o 1 dependiendo del valor de a.

  • Para a= 1, la expresión arr[a] se reduce a arr[1] = b.
  • Para a= 0, la expresión arr[a] se reduce a arr[0] = c.
     

C

#include <stdio.h>
  
int ternary(int a, int b, int c)
{
    int arr[] = { c, b };
    return arr[a];
}
  
int main(void)
{
    int a = 10, b = 20;
    printf ("%d\n", ternary(0, a, b));
    printf ("%d\n", ternary(1, a, b));
    return 0;
}

C++

#include <iostream>
using namespace std;
 
int ternary(int a, int b, int c)
{
    int arr[] = { c, b };
    return arr[a];
}
  
int main(void)
{
    int a = 10, b = 20;
    cout<<ternary(0, a, b)<<endl;
    cout<<ternary(1, a, b)<<endl;
    return 0;
}

Python3

def ternaryOperator( a, b, c):
  arr = [ c, b ]
  return arr[a]
   
# Driver code
if __name__ == "__main__":
  a = 1
  b = 10
  c = 20
  print(ternaryOperator(a, b, c))
  a = 0
  print(ternaryOperator(a, b, c))
Producción

20
10

Preguntado en: Nvidia 
Este artículo es una contribución de Rohit Thapliyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *