【发布时间】:2020-07-27 15:48:20
【问题描述】:
int reverse(int x) {
if(x==0)
return 0;
int y = abs(x);
long long result = 0;
while(y > 0) {
result *= 10;
result += y % 10;
y /= 10;
}
if(result > INT_MAX || result < INT_MIN)
return 0;
if(x<0) {
return -result;
}
return result;
}
此代码如何有效?很明显,result 是一个 long long 变量,但代码的返回类型是 int。代码仍然有效。
【问题讨论】:
-
开启(增加)编译器的警告级别。
-
你检查警告了吗?编译器可能会告诉您精度损失。
-
如果
result等于INT_MIN,则返回-result时将超出范围。
标签: c++ c++11 int long-integer