Implementing ternary operator without any conditional statement
How to implement ternary operator in C++ without using conditional statements.
In the following condition: a ? b: c
If a is true, b will be executed.
Otherwise, c will be executed.
We can assume a, b and c as values.
1. Using Binary Operator
We can code the equation as :
Result = (!!a)*b + (!a)*c
In above equation, if a is true, the result will be b.
Otherwise, the result will be 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> |
Output
10 20
2. Using Array
int arr[] = { b, a };
We can return the value present at index 0 or 1 depending upon the value of a.
- For a= 1, the expression arr[a] reduces to arr[1] = b.
- For a= 0, the expression arr[a] reduces to 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)) |
Output
20 10
Asked In : Nvidia