C - SPLessons

Chapter 12

C Operator

C Operator

C Operator is a symbol that tells the compiler to perform mathematical or logical operation on the variables or a value. C language has rich set of built-in operators.
For better understanding, C Operators are classified into 8 categories and are described as follows.

Arithmetic Operators

 
Arithmetic operators performs mathematical calculations like addition, subtraction, multiplication, division, and modulus.

Operator Description Example
+ Two operands are added x+y gives 30
Subtracts second operand from the first x-y gives -10</td
* Multiplies operands x*y gives 200
/ Divide numerator by denominator x/y gives 2
% Modulus operator and remainder of after an integer division y%x gives 0

#include<stdio.h>
#include<stdio.h>
int main()
{
    int num1,num2;
    int sum,sub,mult,div,mod;

    printf("\nEnter First Number :");
    scanf("%d",&num1);
    printf("\nEnter Second Number :");
    scanf("%d",&num2);

    sum = num1 + num2;
    printf("\nAddition is : %d",sum);

    sub = num1 - num2;
    printf("\nSubtraction is : %d",sub);

    mult = num1 * num2;
    printf("\nMultiplication is : %d",mult);

    div = num1 / num2;
    printf("\nDivision is : %d",div);

    mod = num1 % num2;
    printf("\nModulus is : %d",mod);

    return(0);
}

Output:


Enter First Number :6

Enter Second Number :3

Addition is : 9
Subtraction is : 3
Multiplication is : 18
Division is : 2
Modulus is : 0

Assignment Operators

Assignment C operator assigns values to variables.

Operator Description Example
= Assignment operator: Assigns right-hand side(called rvalue)to left-hand side(called lvalue) z=x+y assigns value of x+y to z
+= Add AND Assignment operator: Adds right operand to left operand and assigns the result to left operand y+=x is equivalent to x=y+x
-= Subtract AND Assignment operator: Subtracts right operand from left operand and assigns result to left operand y-=x is equivalent to y=y-x
*= Multiply AND Assignment operator: Multiplies right operand from left operand and assigns result to left operand y*=x is equivalent to x=y*x
/= Divide AND Assignment operator: Divides right operand from left operand and assigns result to left operand y/=x is equivalent to x=y/x
%= Modulus AND Assignment operator: Takes modulus using two operands and assigns result to left operand y%=x is equivalent to x=y%x

#include<conio.h>
#include<stdio.h>
#include<math.h>
int main()
{
	int a;
	a=5;
	a+= 3;
	printf("\n Result of op1 = %d",a);

	a=5;
	a-=3;
	printf("\n Result of op2 = %d",a);

	a=5;
	a*=3;
	printf("\n Result of op3 = %d",a);

	a=5;
	a/=3;
	printf("\n Result of op4 = %d",a);

	a=5;
	a%=3;
	printf("\n Result of op5 = %d",a);
	return 0;
}

Output:


 Result of op1 = 8
 Result of op2 = 2
 Result of op3 = 15
 Result of op4 = 1
 Result of op5 = 2

Relational Operators

Relational operators can be used to compare two variables.

Operator Description
== Checks equal or not, if yes then condition returns true
!= Checks equal or not, if values are not equal then returns true
> Checks for greater value
< Checks for lower value
>= Checks for greater than or equal to the value
<= Checks for less than or equal to the value

#include<stdio.h>
int main()
{
	int num1 = 30;
	int num2 = 40;
	printf("Value of %d > %d is %d\n",num1,num2,num1> num2);
	printf("Value of %d >=%d is %d\n",num1,num2,num1>=num2);
	printf("Value of %d <=%d is %d\n",num1,num2,num1<=num2);
	printf("Value of %d < %d is %d\n",num1,num2,num1< num2);
	printf("Value of %d ==%d is %d\n",num1,num2,num1==num2);
	printf("Value of %d !=%d is %d\n",num1,num2,num1!=num2);
	return(0);
}

Output:

Value of 30 > 40 is 0
Value of 30 >=40 is 0
Value of 30 <=40 is 1
Value of 30 < 40 is 1
Value of 30 ==40 is 0
Value of 30 !=40 is 1

Increment and Decrement Operators

Increment and Decrement Operators are used to increment or decrement the value assigned to a variable by 1.

Operators Operator type Description
++i Pre-increment Value of i incremented before assigning it to variable i
i++ Post-increment Value of i incremented after assigning it to variable i
– -i Pre-decrement Value of i decremented before assigning it to variable i
i- – Post-decrement Value of i decremented after assigning it to variable i

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
	int a,b,c,d,x=10,y=10;
	a=x++;
	b=++y;
	c=x--;
	d=--x;
	printf("Value of a : %d\n",a);
	printf("Value of b : %d\n",b);
	printf("Value of c : %d\n",c);
	printf("Value of d : %d\n",d);
}

Output:

Value of a : 10
Value of b : 11
Value of c : 11
Value of d : 9

Logical Operators

Logical operators performs logical operations on given expressions.

Operator Name of Operator Output
&& AND Operator Output is 1 only when conditions on both sides of operator becomes true
|| OR Opeator Output is 0 only when conditions on both sides of operator becomes false
! NOT Operator Gives inverted output


#include<stdio.h>
#include<conio.h>
int main()
{
	int a=40,b=20;
	int c=20,d=10;
	if (a>b && b!=0)
	{
		printf("&& operator : Both conditions are true\n");
	}
	if (c>d || d!=20)
	{
		printf("|| Operator : Only one condition is true\n");
	}
	if (!(a>b && a!=0))
	{
		printf("!=Operator : Both conditions are true\n");
	}
	else
	{
		printf("!Operator : Both conditions are true but are reversed as false");
	}
}

Output:

&& operator : Both conditions are true
|| Operator : Only one condition is true
!Operator : Both conditions are true but are reversed as false

Bitwise Operators

Bitwise operators are used to convert values into binary digits.

Operator Symbol Form Operation
Right shift >> x>>y all bits in x shifted right y bits
Left shift << x<<y all bits in x shifted left y bits
Bitwise AND & x&y each bit in x AND each bit in y
Bitwise OR | x|y each bit in x OR each bit in y
Bitwise XOR ^ x^y each bit in x XOR each bit in y
Bitwise NOT ~ ~x all bits in x flipped


#include<stdio.h>
#include<conio.h>
int main()
{
	int a=10,b=20,AND_op,NOT_op,XOR_op,OR_op;
	AND_op=(a&b);
	OR_op=(a|b);
	NOT_op=(~a);
	XOR_op=(a^b);
	printf("AND_op value = %d\n",AND_op );
	printf("OR_op value = %d\n",OR_op);
	printf("NOT_op value = %d\n",NOT_op );
	printf("XOR_op value = %d\n",XOR_op );
	printf("left_shift value = %d\n",a<<1); 
	printf("right_shift value = %d\n",a>>1);
}
AND_op value = 0
OR_op value = 30
NOT_op value = -11
XOR_op value = 30
left_shift value = 20
right_shift value = 5

Conditional Operator

Conditional C operator is used to make for making decisions. It can also be called as “Ternary operator“.

Operator Name Description
Condition ? X : Y Conditional Opeator Checks the condition. If condition is true, then it returns value X, otherwise value Y</td


#include <stdio.h>
int main()
{
	int a=5,b;
	b=(a==5?10 : 0 ) ;
	printf("x value is %d\n",a);
	printf("y value is %d",b);
}

Output:

x value is 5
y value is 10

Special Operators

Special operators are used along with the above operators. C-language provides some special operators.

Operator Name Description
sizeof Size of operator Returns the size of a variable
* Pointer Operator Points to a variable
& Pointer Operator Returns the address of a variable


#include<stdio.h> 
int main() 
{ 
	double a; 
	printf("Size of double=%d bytes\n",sizeof(a)); 
	int *ptr,b; 
	b=10; 
	ptr=&b; 
	printf("%d",*ptr); 
	return 0; 
}

Output:

Size of double=8 bytes
10

Summary

  • C Operator performs mathematical and logic operations.
  • Arithmetic, Assignment, Relational,Increment and Decrement, Logical, Bitwise, Conditional are few types of operators.

  • Other than variable identifier, do not use increment and decrement C operator with any expression.
  • Do not use variable without assigning any value to it.
  • Don’t confuse between equality operator == with assignment operator =