w3resource

C Programming: Conditional (Ternary) Operator

Conditional Operator in C Programming

Overview

In C, the conditional operator ?: is a shorthand for an if-else statement. It is called the ternary operator because it operates on three expressions:

Exp1 ? Exp2 : Exp3;

  • Exp1: The condition to evaluate.
  • Exp2: The result if Exp1 is true (non-zero).
  • Exp3: The result if Exp1 is false (zero).

The ternary operator allows for more concise code, especially in simple conditional expressions.

Syntax:

Exp1 ? Exp2 : Exp3;
  • If Exp1 evaluates to true (non-zero), Exp2 is executed.
  • If Exp1 evaluates to false (zero), Exp3 is executed.

Key Topics:

  • The conditional operator ?: is a compact way of writing an if-else statement.
  • It is useful when you need to assign values based on a condition in a single line.
  • Only one of the two expressions (Exp2 or Exp3) is evaluated based on the condition.

Example 1: Basic Conditional Operator usage

The conditional operator compares two values and assigns the larger one to a variable.

Code:

#include <stdio.h>
int main() {
    int a = 10, b = 20;    
    // Use of the conditional operator
    int max = (a > b) ? a : b;  // If 'a' is greater than 'b', assign 'a' to 'max', else assign 'b'
    
    printf("The maximum value is: %d\n", max);  // Output will be 20
    return 0;
}

Output:

The maximum value is: 20.

Explanation:

  • The conditional operator checks if a > b.
  • Since this condition is false (10 is not greater than 20), the value of b (20) is assigned to max.

Example 2: Checking for Even or Odd

The conditional operator checks whether a number is even or odd and returns the corresponding result.

Code:

#include <stdio.h>
int main() {
    int num = 5;    
    // Check if the number is even or odd using the conditional operator
    const char *result = (num % 2 == 0) ? "Even" : "Odd";  // If 'num' is divisible by 2, it's even; otherwise, it's odd
    
    printf("%d is %s\n", num, result);  // Output will be 5 is Odd
    return 0;
}

Output:

5 is Odd.

Explanation:

  • The conditional operator checks if num % 2 == 0 (whether the number is even).
  • Since 5 is not divisible by 2, the string "Odd" is assigned to result.

Example 3: Simplifying Multiple Conditional assignments

Nested conditional operators allow checking for multiple conditions concisely.

Code:

#include <stdio.h>
int main() {
    int num = -10;
    
    // Determine if the number is positive, negative, or zero
    const char *result = (num > 0) ? "Positive" : ((num < 0) ? "Negative" : "Zero");  // Nested conditional operators
    
    printf("%d is %s\n", num, result);  // Output will be -10 is Negative
    return 0;
}

Output:

-10 is Negative.

Explanation:

  • The outer conditional checks if num > 0. Since this is false, it moves to the inner conditional.
  • The inner conditional checks if num < 0. Since this is true, "Negative" is assigned to result.

Example 4: Conditional Operator in Function return

The conditional operator can be used in functions to return values based on conditions.

Code:

#include <stdio.h>
// Function to return the smaller of two numbers using the conditional operator
int min(int a, int b) {
    return (a < b) ? a : b;  // If 'a' is less than 'b', return 'a', else return 'b'
}
int main() {
    int x = 15, y = 25;    
    printf("The minimum value is: %d\n", min(x, y));  // Output will be 15
    return 0;
}

Output:

The minimum value is: 15.

Explanation:

  • The function min uses the conditional operator to return the smaller of the two arguments.
  • Since 15 is less than 25, min(x, y) returns 15.

Example 5: Conditional Assignment in expressions

The conditional operator can be used within expressions to simplify logic.

Code:

#include <stdio.h>
int main() {
    int a = 5, b = 10;    
    // Use the conditional operator directly in an expression
    int result = (a < b) ? (a + b) : (a - b);  // If 'a' is less than 'b', result is 'a + b', else it's 'a - b'
    
    printf("Result: %d\n", result);  // Output will be 15
    return 0;
}

Output:

Result: 15.

Explanation:

  • The condition a < b is true, so the expression a + b is evaluated.
  • Since a is 5 and b is 10, the result is 15.


Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/c-programming/c-conditional-operator.php