[英]How is this program giving out these outputs? C++
#include<iostream>
using std::cout; using std::endl; using std::cin;
int main (){
long num1;
cin >> num1;
long num2;
cin >> num2;
long cnt = 0;
long temp = num1;
long res = 0;
while (cnt < num2){
res = temp % 10;
temp = temp / 10;
temp = temp + (res * 100);
cnt++;
}
cout << num1 << endl; // Line 1
cout << temp << endl; // Line 2
cout << cnt << endl; // Line 3
}
我对这个程序如何获得这些输出感到困惑。 给定用户输入 456 2 ,第 2 行应该返回 564。下面是我的工作(问题 4)。 运行计算后得到624,为什么是564? 我试图做的下一个问题是用户输入:789 3,在我看到我的答案会得到数千人之后,我认为我做错了。 如果我做错了什么,请告诉我如何获得 564 的输出。 谢谢。
回答你的问题,你的计算和实际结果的区别如下
0:
分辨率 = 456 % 10 = 6
温度 = 456 / 10 = 45
温度 = 45 + (6*100) = 645
cn 1:
分辨率 = 645 % 10 = 5
温度 = 645 / 10 = 64
温度 = 64 + (5*100) = 564
整数除法截断余数,这是 mod 运算符的结果。 你的小数还在那里,当乘以 100 时,它凭空产生了 60
只是一个很好的例子,当以一个大的因素增长时,舍入问题! (100)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.