C Tutorial

C Tutorial C Language Environment Setup Execution flow of C program C printf and Scanf C Data type C Token Variable in C Operators in C Comments in C Escape Sequence in C C – Storage Classes C Decision control statement Loop Statement in C Break, continue and goto statement in C Type Casting in C Function in C Recursion in C String in C C Array Pointer in C Dynamic memory allocation C –Structure Nested Structure in C Union in C File Handling in C C pre-processor Static Function In C Sizeof In C Selection Sort In C Scope Of Variables In C Runtime Vs Compile Time In C Random Access Lseek In C Queue Implementation In C Pseudo Code In C Prototype In C Pointer To Pointer In C Pointer Arithmetic In C Passing Array To Function In C Null Character In C Merge Sort In C Macros In C Library Functions In C Memory Leak In C Int In C Goto And Labels In C Fibonacci Series In C Fflush In C Derived Data Types In C Data Types In C Const Vs Volatile In C Character Set In C Character Class Tests In C Calloc In C C Pointers Arrays In C Include In C Clrscr In C C Vs Java String Literals In C Types Of Pointers In C Variables In C Volatile In C Why C Is A Middle Level Language Infix To Postfix Program In C Ceil function in C LCM of two numbers in C Quick sort in C Static in C function pointer as argument in C Top Array Keywords in C Add two numbers using the function in C Armstrong program in C using function Array, Declaring Arrays and Array Initialization Limitations of Inline Function in C Merge and Merge sort with example in C Do-While Loop in C For Loop in C While-Loop in C Difference between while and do-while loop in C Array Of Structures in C Data Structures And Algorithms in C Types Of Structures In C How to Avoid Structure Padding in C Use of Structure in C Do WHILE LOOP in C Programming Examples For Loop in C Programming Examples Entry Control Loop in C Exit control loop in C Infinite loop in C Nested loop in C pow() function in C String Handling functions in C Prime Number code in C Factorial Program in C using For Loop Factorial Program in C Using While Loop Fibonacci Series in C Using For Loop Fibonacci series in C using while loop Prime Number Program in C using for Loop While Loop in C programming examples Built-in functions in C Assert() Function C vs Java Strings Call Back Function in Embedded C Else If Ladder fgets() function Ftell() Function getc() function getch() function gets() function Heap Sort Nested if-else statement Pi() Function Positioning of file Write() function abs() function in C Attributes in C C program to find factorial of a number using Recursion Ferror() in c fopen() function in C Fibonacci series program in C using Recursion Formatted Input and output function in C Snake Game in C User Defined Functions in C Beep() function in C Cbrt() function in C Hook() function in C Isalnum() function in C C Program to find the Roots of a Quadratic Equation C Switch Statements Difference between rand() and srand() function in C Difference between while and for loop in C Doubly Linked list in C Example of Iteration in C How to use atoi() function in C How to use floor() function in C How to use sine() function in C How to use Typedef Struct in C Integer Promotions in C C Program Swap Numbers in cyclic order Using Call by Reference C Program to Find Largest Number Using Dynamic Memory Allocation C Program to Find the Largest Number using Ternary Operator C/C++ Program to Find the Size of int, float, double and char Find the Largest Three Distinct Elements in an Array using C/C++ Loop Questions in C Modulus on Negative Numbers in C Multiplication table program in C using For loop Nested Loops in C Programming Examples C Program for Mean and Median of an Unsorted Array Results of Comparison Operations in C and C++ Reverse a Stack using Recursion in C Simple hash() function in C strcat() Function in C Sum of N numbers in C using For loop Use of free() function in C Write a program that produces different results in C and C++ C Function Argument and Return Values Keywords in C Bank management system in C Calendar application in C Floor() Function in C Free() Function in C How to delete a file in C How to move a text in C Remove an element from an array in C Unformatted input() and output() function in C What are linker and loader in C

Modulus on Negative Numbers in C

In this tutorial, we will explore some examples of modulus on negative number.

What is Modulus of Negative number?

By omitting the minus sign, one can determine the modulus of a negative number. Adding vertical lines all around a number indicates the modulus of that number. Also keep in mind that multiplying a negative number by one will produce its modulus, like in the case of the expression (-9) = 9.

Modulus means:

The remainder of a division is represented by the modulo, or simply "mod." Gauss wrote a treatise on modular arithmetic that was released in 1801. Later, Donald Knuth provided a mathematical definition that is now universally recognised.

The result of a division is returned by the modulo operator. But when negative numbers are added, things become a little bit more complicated.

Let’s look at some examples on modulus of negative numbers. And see the output of the programs.

Example 1:

C Program

#include <stdio.h>


// Main function
int main ()
{
// Declaring and initializing the variables
int x = 7, y = - 11, z = 2;


// Calculating and printing
printf ( "%d", x % y / z );
}

C++ Program

#include <iostream>
using namespace std;


// Main function
int main ()
{
// Declaring and initializing the variables
int x = 7, y = - 11, z = 2;


// Calculating and printing
cout << x % y / z ;
}

Output:

3

The precedence for % and / is the same. % and / present left-to-right associativity. Therefore, percent is carried out initially. The significance is that, in the case of the modulus operator, a sign of a left operand is attached to the result.

Example 2:

C Program

#include <stdio.h>


// Main function
int main ()
{
 // Declaring and initializing the variables
 // x is positive and y is negative.
   int x = 4, y = -9 ;


// Calculating and printing
printf ("%d" , x % y ) ;
}

C++ Program

#include <iostream>
using namespace std;


// Main function
int main ()
{
 // Declaring and initializing the variables
 // x is positive and y is negative.
   int x = 4, y = -9 ;


// Calculating and printing
cout << x % y ;
}

Output:

4

Example 3:

C Program

#include <stdio.h>


// Main function
int main ()
{
 // Declaring and initializing the variables
 // x is negative and y is positive.
   int x = -4, y = 9 ;


// Calculating and printing
printf ("%d" , x % y ) ;
}

C++ Program

#include <iostream>
using namespace std;


// Main function
int main ()
{
 // Declaring and initializing the variables
 // x is negative and y is positive.
   int x = -4, y = 9 ;


// Calculating and printing
cout << x % y ;
}

Output:

-4

However, according to the meaning of the term, the remainder is always an integer that should be subtracted from x to make it divisible by y.

Therefore, since -4 is negative, it is not the genuine remainder in the case above.

To avoid negative remainder, we must always find the remainder in the C/C++ language as (x % y + y) % y (add quotient to remainder and again take remainder).

Example 4:

C Program

#include <stdio.h>


// Main function
int main ()
{
 // Declaring and initializing the variables
 // x is negative and y is negative.
   int x = -4, y = -9 ;


// Calculating and printing
printf ("%d" , x % y ) ;
}

C++ Program

#include <iostream>
using namespace std;


// Main function
int main ()
{
 // Declaring and initializing the variables
 // x is negative and y is negative.
   int x = -4, y = -9 ;


// Calculating and printing
cout << x % y ;
}

Output:

-4

When both operands are positive, all can guess what a modulus operator would generate. But different languages provide different results when it comes to negative numbers.

The modulus in C is calculated as,

x % n = x – ( n * trunc( x / n ) ).


For example,
9 % -4 = 9 – ( -4 * trunc ( 9 / -4 ) )
           = 9 – ( -4 * trunc ( -2.25 ) )
           = 9 – ( -4 * -2 ) { rounded off }
           = 9 – 6
           = 3

Chart:

NumeratorDenominator
XYX / YX % Y
++++
+--+
-+--
--+-

We can learn from the above chart that the % operator always takes a numerator's sign into account.



ADVERTISEMENT
ADVERTISEMENT