V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunshinel
V2EX  ›  编程

C 语言整数反转

  •  
  •   sunshinel · 2019-06-23 13:29:46 +08:00 via Android · 5358 次点击
    这是一个创建于 1979 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近写了一个反转整数的 c 语言
    int x, flage, new_ x=0;
    printf("请输入需要反转的数:");
    scanf("% d",& x);
    flage= x<0?-1:1;
    do{
    new_ x= new_ x*10+( x%10);
    x/=10;
    } while( x!=0);
    new_ x= flage* new_ x;
    printf("反转后:% d\ n", new_ x);
    return0;
    为什么输入负数的时候反转的是正数,比如-1234,反转后是 4321。断点测试了在输出之前的语句 new_ x=flage*new_x 的 new_x 是负数,但 printf 以后就输出正数了。请大神指点。
    第 1 条附言  ·  2019-06-23 16:32:22 +08:00
    已经解决了,不需要用 flage 来判断符号,直接反转即可。负数反转还是负数,不用 flage 来判断符号。谢谢各位。
    6 条回复    2019-08-14 16:28:51 +08:00
    pkookp8
        1
    pkookp8  
       2019-06-23 14:12:42 +08:00 via Android   ❤️ 1
    断点给的 newx 是乘法之前的 newx
    负数取余是负数
    flag 拼写是不是错了
    annoymous
        2
    annoymous  
       2019-06-23 14:19:32 +08:00   ❤️ 1
    符号取出来之后 输入取绝对值
    sunshinel
        3
    sunshinel  
    OP
       2019-06-23 16:30:54 +08:00 via Android
    已经解决了,不需要用 flage 来判断符号,直接反转即可。负数反转还是负数,不用 flage 来判断符号。
    q8515620
        4
    q8515620  
       2019-06-23 16:45:53 +08:00 via Android
    既然已经解决了,那我就说个题外话吧,flag,不是 flage (🐶)
    LLaMA2
        5
    LLaMA2  
       2019-07-20 15:37:09 +08:00
    我怀疑你这个有 BUG,假定你是三十二位的 int
    你输入 幺零零零零零零零零九 看看反转后是多少
    gaokevin163
        6
    gaokevin163  
       2019-08-14 16:28:51 +08:00
    如果某一个数据反转之前可以用 int 来表示,但是反转之后不能用 int 来表示(int 长度不够,越界),这样的话运行的结果就有问题,建议楼主将 new_x 改为 long 类型,同时打印的时候用 printf("%ld",new_x);
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4516 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:00 · PVG 18:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.