求问为什么在循环结束后返回的值少了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;

 }
阅读 3.9k
4 个回答

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

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下编译运行,结果是没问题的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题