Pages

Tuesday, March 1, 2011

讨论:反转一个整数,如12345->54321

反转一个整数,如12345->54321
当时写了个这么个东西(面试官假设输入是正整数):
int reverse(int n) {
   res = 0;
   while(n != 0) {
      res *= 10;
      res += n % 10;
      n = n / 10;
   }
   return res;
}

然后面试官问,如果n<0怎么办;我说判断一下,然后把n = -n,然后重复;
问题就在这里,他说不行,正确的做法是n = -1 * n;我不明白为什么是这样?


n为负数,你想把它整成整数
不用 n = -1 * n;  用啥?
或者你用  n = 0 - n; 也行

-n 编译都不通过

居然都不做防止溢出的?
正负数的溢出不等

The syntax
n = -n;
is valid in C and C++.
 

No comments:

Post a Comment