我正在尝试使用面向对象的 cpp 解决回文数问题。我在代码中遇到了一个奇怪的错误,显示“有符号整数溢出:-1734809184 * 10 无法用‘int’类型表示”。这是我的代码,我需要一些有用的帮助来通过测试用例。
class Solutiuon {
public:
bool isPalindrome(int x) {
int rev, temp;
temp = x;
while (x > 0) {
rev = rev * 10 + (x % 10);
x /= 10;
}
if(rev == temp)
return true;
else
return false;
}
};
使用我的代码,我希望它对于回文数返回 true,对于非回文数返回 false。
您正在经历经典的未定义行为。在您的代码中,变量
rev
在您访问 rev = rev * 10 + (x % 10)
中之前未初始化。
您应该首先将
rev
初始化为 0
显式。 C++ 不会自动为你做这件事。
作为补充说明,您的解决方案没有任何面向对象的内容。