reversing input numbers

Valiantangel's Avatar, Join Date: Apr 2012
Light Poster
Hi came up with his code, basically to reverse whatever input you key in. However when i key in 0 or 0001 or -101 they donot reverse.What have i done wrong and how to correct?

Code:
#include <iostream>

using namespace std;

int main ()
{
   long int y = 0,x;
   cout <<"Enter any numeric value to be reversed:"; 
   cin>> x;
    
    while (x > 0) 
    {
        y *= 10;
        y += x % 10;
        x /= 10;

    }
    cout <<y <<"\n";
    
    return(0);
}
Valiantangel's Avatar, Join Date: Apr 2012
Light Poster
Mmmmmm it could be because i am using %modulus so if that is the case, should i re-frame from using modulus for negative numbers?How about 0s? any help?
Valiantangel's Avatar, Join Date: Apr 2012
Light Poster
i think in all likelihood because of integer.
Anindya1989's Avatar, Join Date: Apr 2012
Newbie Member
Quote:
Originally Posted by Valiantangel View Post
Mmmmmm it could be because i am using %modulus so if that is the case, should i re-frame from using modulus for negative numbers?How about 0s? any help?
Yes its definitely because of the modulus. As it turns out Cís modulo operator behaves differently from the mathematically defined ones when we apply it for negative numbers.
The C90 standard does not define the result of modulus applied on negative numbers, so the result is compiler dependant.