求问为什么在循环结束后返回的值少了1呢?

想不使用字符串类型处理就将c++中一个字符串翻转过来,但是发现最后的结果总是会莫名其妙的不对,于是使用输出语句排查问题,但是还是没有解决到底是哪里导致数值出现了变化,求大大么指点,下面附上代码与运行截图
图片描述

int main(){

int x;

cout << "cin the number:"<<endl;

cin >> x;

int number[15];

bool isfushu = false;

if (x<0){

x= x*(-1);

isfushu = true;

}

int i=0;

while (x>=1){

number[i] = x%10;

x= x/10;

i++;

}

long othernumber = 0;

for(int i1=i-1; i1>=0; i1--){

cout<<i1<<endl;

cout<<number[i1]<<"*"<<pow(10,i-1-i1)<<"+"<<othernumber;

othernumber = othernumber + number[i1]*pow(10.0,(i-1-i1));

cout<<"=="<<othernumber<<endl;

}

if (othernumber > INT_MAX )

cout << "0" <<endl;

else if (isfushu == true)

cout<<othernumber*(-1)<<endl;

else

cout<<othernumber<<endl;

}

回答:

我复制了你的代码,得到了不一样的结果。

cin the number:

567

2

5*1+0==5

1

6*10+5==65

0

7*100+65==765

765

请描述一下你使用的开发环境

回答:

pow返回是浮点被强转成整数,后面的小数位被砍掉了.

回答:

aaa@ubuntu:~/Desktop/test$ ./a.out

cin the number:

567

2

5*1+0==5

1

6*10+5==65

0

7*100+65==765

765

你的代码直接复制到我的64位Ubuntu下编译运行,结果是没问题的

回答:

代码存在问题啊

以上是 求问为什么在循环结束后返回的值少了1呢? 的全部内容, 来源链接: utcz.com/p/191754.html

回到顶部