此问题已在此处有答案:
Uninitialized variable behaviour in C++(4个答案)
What happens when I print an uninitialized variable in C++? [duplicate](4个答案)
8天前关闭
我试图解决回文数问题使用面向对象的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为非回文数。
1条答案
按热度按时间k7fdbhmy1#
您正在经历经典的未定义行为。在您的代码中,变量
rev
在您访问rev = rev * 10 + (x % 10)
之前未初始化。首先,您应该显式地将
rev
初始化为0
。C++不会自动为你做这件事。如果不显式初始化它,值可以是 * 任何值 *。作为一个附加说明,你的解决方案没有任何面向对象的东西。
最后一点:
相当于: