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.

Follow us on Facebook and Twitter for latest update.