c++ - 反转 Int 数字的函数
问题描述
我是 C++ 和编程的初学者。我正在编写一个函数,该函数将采用整数并反转其数字,例如 reverseDigit(2376) = 6732。我遇到了一个我绝对无法理解的问题,尽管我花了几个小时处理代码,跟踪它,打印出结果以跟踪它在做什么。
问题是(对我而言)该函数对于奇数位数的整数与偶数位数的整数的工作方式不同。但是,如果我在此过程中打印每个步骤的结果,我发现代码在任何步骤中所做的事情都没有区别。
这是该函数的代码:
void reverseDigit(int num)
{
int digCount = digitCount(num);
int flippedNum = 0;
for (int i = 1; i <= digCount; i++)
{
cout << "Run #" << i << ": " << endl;
cout << "((num % 10)*pow(10, digCount - i)) = " << ((num % 10)*pow(10, digCount - i)) << endl;
cout << "num = " << num << ", flippedNum = " << flippedNum << endl;
flippedNum += ((num % 10)*pow(10, digCount - i));
num = num / 10;
}
cout << "The new number is " << flippedNum << endl;
}
这是我得到的偶数 int 和奇数 int 的结果(打印中间结果):
所以你知道这里出了什么问题:当我输入 256(或任何奇数位数的 int)时,flippedNum 会以某种方式递减 1。我终生无法找到我告诉计算机执行的代码中的哪个位置这个!flippedNum 被初始化为 0,我添加到它的值等于 600,但不知何故,flippedNum 得到了值 599!
解决方案
推荐阅读
- java - 错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:10
- go - sync.Pool 比使用 channel 慢很多,那我们为什么要使用 sync.Pool 呢?
- excel - 如何在excel公式中实现以下
- plsql - 联合所有运算符的混乱
- apache - 使用 htaccess 重写规则
- php - ajax响应后有url重定向
- swift - 转换为协议时未调用协议扩展方法
- android - 当应用程序在 Nougat(版本 25)事件中从后台清除时,服务未运行,尽管我使用了 startforegound 通知
- http - 使用 ionic 向 iis 服务器发出 http 请求时出现未知的 http 错误
- aql - QRAdar - AQL 在输入 SELECT 处没有可行的替代方案