我正在用c ++编写代码,以检测输入数字是否为回文数,这意味着其反方向与原点相同。我在计算反向整数时遇到问题。
例如
121 returns true;
123 returns false;
12321 returns true;
10 returns false;
我输入123,总和应为321。但是,我的代码始终返回386。我使用xcode进入了该函数。但是,我仍然不知道为什么反向+ =(3 * 10)+ 2变为35,或者为什么最终反向数字为386。
int origin = x;
int reverse = 0;
while (x != 0) {
int digit = x % 10;
reverse += ((reverse * 10) + digit);
x /= 10;
}
答案 0 :(得分:0)
为什么
reverse += (3 * 10) + 2
变成35
因为+=
将右侧的内容添加到左侧的现有值中。 (3 * 10) + 2
是32,但是reverse
已经是 3,因此您要将32添加到现有的3中,即35。
您不想添加到reverse
的值;您要替换。
更改
reverse += ((reverse * 10) + digit)
收件人
reverse = ((reverse * 10) + digit)