反转一个整数,如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++.
当时写了个这么个东西(面试官假设输入是正整数):
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