In the C programming language, relational operators play a crucial role in decision-making and logical evaluation. They are used to compare two operands and determine the relationship between them. The result of a relational expression in C is either true or false, represented internally as 1 for true and 0 for false.
Understanding C relational operators is essential for writing conditional statements, loops, and complex logical expressions. Almost every real-world C program relies heavily on relational operators to control program flow. For beginners and advanced learners alike, mastering these operators is a foundational step toward becoming proficient in C programming.
Relational operators in C are symbols that compare two values or expressions. They evaluate the relationship between operands such as equality, inequality, greater than, less than, or equality with boundary conditions.
The output of any relational operation is an integer value:
These operators are widely used in:
The C language provides six relational operators. Each operator has a specific purpose and syntax.
| Operator | Name | Description |
|---|---|---|
| < | Less than | Returns true if left operand is less than right operand |
| > | Greater than | Returns true if left operand is greater than right operand |
| <= | Less than or equal to | Returns true if left operand is less than or equal to right operand |
| >= | Greater than or equal to | Returns true if left operand is greater than or equal to right operand |
| == | Equal to | Returns true if both operands are equal |
| != | Not equal to | Returns true if operands are not equal |
The less than operator checks whether the value of the left operand is strictly smaller than the value of the right operand. It is commonly used in loops and range-based conditions.
#include <stdio.h>
int main() {
int a = 5, b = 10;
if (a < b) {
printf("a is less than b");
}
return 0;
}
In this example, the condition evaluates to true because 5 is less than 10.
The greater than operator compares two operands and returns true if the left operand is greater than the right operand.
#include <stdio.h>
int main() {
int x = 20, y = 15;
if (x > y) {
printf("x is greater than y");
}
return 0;
}
This operator is frequently used in decision-making logic and validation checks.
The less than or equal to operator checks whether the left operand is either less than or exactly equal to the right operand.
#include <stdio.h>
int main() {
int marks = 40;
if (marks <= 50) {
printf("Needs improvement");
}
return 0;
}
This operator is especially useful in grading systems, limits checking, and boundary conditions.
The greater than or equal to operator returns true when the left operand is greater than or equal to the right operand.
#include <stdio.h>
int main() {
int age = 18;
if (age >= 18) {
printf("Eligible to vote");
}
return 0;
}
This operator is widely used in eligibility checks and threshold comparisons.
The equal to operator checks whether both operands have the same value. It is important not to confuse this operator with the assignment operator.
#include <stdio.h>
int main() {
int num = 10;
if (num == 10) {
printf("Number is equal to 10");
}
return 0;
}
A common beginner mistake is using a single equals sign instead of double equals.
The not equal to operator checks whether two operands are different.
#include <stdio.h>
int main() {
int password = 1234;
if (password != 1111) {
printf("Incorrect password");
}
return 0;
}
This operator is often used in validation, error checking, and loop termination conditions.
Relational operators are a fundamental part of decision-making in C programming. They are most commonly used inside conditional statements.
#include <stdio.h>
int main() {
int temperature = 35;
if (temperature > 30) {
printf("It is a hot day");
}
return 0;
}
#include <stdio.h>
int main() {
int number = 7;
if (number % 2 == 0) {
printf("Even number");
} else {
printf("Odd number");
}
return 0;
}
Relational operators are heavily used in loop conditions to control iteration.
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 5; i++) {
printf("%d\n", i);
}
return 0;
}
#include <stdio.h>
int main() {
int count = 1;
while (count < 4) {
printf("Count: %d\n", count);
count++;
}
return 0;
}
C relational operators can be applied to various data types such as integers, floating-point numbers, and characters. When different data types are involved, implicit type conversion occurs.
#include <stdio.h>
int main() {
int a = 5;
float b = 5.0;
if (a == b) {
printf("a and b are equal");
}
return 0;
}
Relational operators in C form the backbone of logical decision-making and program control. They allow programmers to compare values, make informed decisions, and execute different code paths based on conditions. By understanding and practicing these operators, learners can write more efficient, readable, and reliable C programs.
Mastery of C relational operators is essential for anyone aiming to build a strong foundation in C programming and move forward to advanced concepts.
The C language is a high-level, general-purpose programming language. It provides a straightforward, consistent, powerful interface for programming systems. That's why the C language is widely used for developing system software, application software, and embedded systems.The C programming language has been highly influential, and many other languages have been derived from it.
While C is one of the easy languages, it is still a good first language choice to start with because almost all programming languages are implemented in it. It means that once you learn C language, itβll be easy to learn more languages like C++, Java, and C#.
Understand the type of data that you are working with, such as whether itβs an integer or a character. C is based on data types, so understanding this characteristic is the foundation for writing programs that work well.Learn the operators. Operators are symbols that tell the compiler program what to do.
The break is a keyword in C which is used to bring the program control out of the loop. The break statement is used inside loops or switch statement. The break statement breaks the loop one by one, i.e., in the case of nested loops, it breaks the inner loop first and then proceeds to outer loops.
A C compiler is a software tool that translates C source code into machine code, enabling a program to be executed on a computer.
A pointer in C is a variable that holds the memory address of another variable. Pointers are essential for dynamic memory allocation and accessing array elements.
The basic data types in C include int, float, char, double, and void. C also supports user-defined data types like struct, union, and enum.
C is a general-purpose, procedural programming language that was developed in the early 1970s. It is known for its efficiency, flexibility, and wide usage in system software and applications.
++i is the pre-increment operator, which increments the value of i before its value is used in an expression. i++ is the post-increment operator, which uses the value of i in the expression before incrementing it.
A switch statement in C allows multi-way branching based on the value of an expression. It is used when there are multiple conditions to check, offering an alternative to multiple if-else statements.
A macro in C is a preprocessor directive that defines a piece of code or a constant, which is replaced by its value during preprocessing before the compilation begins. They are defined using #define.
An infinite loop in C is a loop that never terminates. It occurs when the loop condition is always true or the loop lacks a proper termination condition.
The break statement in C is used to exit from a loop or switch statement prematurely, typically when a condition is met.
The sizeof operator in C is used to determine the size, in bytes, of a variable or data type.
The continue statement in C is used to skip the current iteration of a loop and proceed with the next iteration, without executing the remaining statements in that iteration.
File handling in C involves reading from and writing to files using functions like fopen(), fclose(), fread(), fwrite(), fprintf(), and fscanf().
A function in C is a block of code that performs a specific task. Functions allow code modularity, reusability, and abstraction.
Recursion in C occurs when a function calls itself to solve a problem. It's often used to solve problems that can be broken down into smaller subproblems, like factorials and tree traversals.
A struct allocates memory for all members, and each member has its own memory space. A union, on the other hand, shares memory between its members, meaning only one member can hold a value at any given time.
Dynamic memory allocation in C allows the program to allocate memory during runtime using functions like malloc(), calloc(), realloc(), and free it using free().
Header files in C (e.g., <stdio.h>, <stdlib.h>) contain function declarations, macros, and constants that are shared across multiple C files, enabling code reuse and organization.
C is a procedural programming language, while C++ is an object-oriented programming (OOP) language that extends C with classes and objects, supporting OOP principles like inheritance and polymorphism.
A structure in C is a user-defined data type that allows grouping of different types of variables under one name, which can be accessed individually using dot notation.
Features of C include low-level access to memory, efficient performance, modularity, recursion, portability, and simple syntax.
A for loop in C is used for executing a block of code a specific number of times, based on the initialization, condition, and increment/decrement expressions.
malloc() allocates a specified number of bytes of memory without initializing them, while calloc() allocates memory for an array of elements and initializes the memory to zero.
== is the equality operator, used to compare two values, while = is the assignment operator, used to assign a value to a variable.
C is a general-purpose, procedural programming language developed by Dennis Ritchie in 1972
Converting one data type to another explicitly or implicitly.
By reference; the function receives the base address of the array.
++i increments before use, i++ increments after use in an expression.
Accessing restricted memory, usually from invalid pointer operations or out-of-bounds array access.
Fast, portable, low-level access, structured, modular, with rich libraries and efficient memory management.
Preprocessor directives using #define for code substitution before compilation.
Global: accessible anywhere. Local: accessible only within defined function or block.
break exits loop entirely; continue skips current iteration and continues loop.
Declaration of a function specifying return type, name, and parameters before its definition.
Pointer pointing to a memory location that has been freed or deleted.
A pointer that doesn't point to any valid memory location, used for safety checks.
Files with .h extension containing declarations of functions and macros used in programs.
Returns the memory size in bytes of a variable or data type.
malloc allocates uninitialized memory; calloc allocates and initializes memory to zero.
Values passed to main() via argc and argv from the terminal.
Allocates specified bytes in heap memory and returns a pointer to the allocated memory.
struct allocates memory for all members; union shares memory among all members.
Memory not properly deallocated, leading to reduced available memory over time.
Specify scope, lifetime, and visibility: auto, static, extern, register.
Retains value between function calls and has internal linkage in C.
Entry point of every C program where execution begins.
A pointer stores the memory address of another variable for indirect access.
Copyrights © 2024 letsupdateskills All rights reserved