繁体   English   中英

这个程序如何给出这些输出? C++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM