Conditional Operator in C Programming
Decision Making in C
In this lesson, we will understand what is Conditional Operator, and how to use it in C programming.
Conditional Operator
Conditional Operator in C return one value if the condition is true and returns another value if the condition is false. This operator is also called a Ternary Operator.
Conditional Operator Syntax
(condition) ? true_value : false_value;
In the above syntax, we will write our condition in place of the condition if the condition is true then the true value will execute and if the condition is false then the false value will execute.
Now let's see an example for more understanding.
Example
C program to find the greatest number among two integer variable's value using the conditional operator.
#include <stdio.h>
#include <conio.h>
int main()
{
int a=10,b=5,c;
c=(a>b) ? a : b;
printf("Greatest number is %d",c);
return 0;
}
Output
Greatest number is 10
Here you can see that the condition (a>b) is true so, the statement that is written just after the ? marks will execute and the value of a gets stored in c.
Nested Conditional Operator
Nested Conditional Operators are possible by including conditional expression as a second (after ?) or third part (after :) of the ternary operator.
Nested Conditional Operator Syntax
(condition) ? ((condition) ? true_value : false_value) : false_value;
(condition) ? true_value : ((condition) ? true_value : false_value);
In the above two syntaxes, on line number 1 you can clearly see that if the first condition is true then we are checking another condition just after the ? mark of the first condition. In the same way on line number 2 if the first condition is true then the true value will execute and if it is false then we are checking another condition just after the : mark of the first condition.
Now let's see an example for more understanding.
Example
C program to find the greatest number among 3 integer variable's value using the nested conditional operator.
#include <stdio.h>
#include <conio.h>
int main()
{
int a=10,b=50,c=26,g;
g=(a>b && a>c) ? a : ((b>a && b>c) ? b : c);
printf("Greatest number is %d",g);
return 0;
}
Output
Greatest number is 50
Here you can see that the condition (a>b && a>c) is false so, we are checking another condition (b>a && b>c) that is written just after the : marks of the first condition and this time the condition is true so the value of b gets stored in g.