sunshinel
V2EX  ›  编程

C 语言整数反转

  •  
  •   sunshinel · Jun 23, 2019 via Android · 6255 views
    This topic created in 2520 days ago, the information mentioned may be changed or developed.
    最近写了一个反转整数的 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 以后就输出正数了。请大神指点。
    Supplement 1  ·  Jun 23, 2019
    已经解决了,不需要用 flage 来判断符号,直接反转即可。负数反转还是负数,不用 flage 来判断符号。谢谢各位。
    6 replies    2019-08-14 16:28:51 +08:00
    pkookp8
        1
    pkookp8  
       Jun 23, 2019 via Android   ❤️ 1
    断点给的 newx 是乘法之前的 newx
    负数取余是负数
    flag 拼写是不是错了
    annoymous
        2
    annoymous  
       Jun 23, 2019   ❤️ 1
    符号取出来之后 输入取绝对值
    sunshinel
        3
    sunshinel  
    OP
       Jun 23, 2019 via Android
    已经解决了,不需要用 flage 来判断符号,直接反转即可。负数反转还是负数,不用 flage 来判断符号。
    q8515620
        4
    q8515620  
       Jun 23, 2019 via Android
    既然已经解决了,那我就说个题外话吧,flag,不是 flage (🐶)
    LLaMA2
        5
    LLaMA2  
       Jul 20, 2019
    我怀疑你这个有 BUG,假定你是三十二位的 int
    你输入 幺零零零零零零零零九 看看反转后是多少
    gaokevin163
        6
    gaokevin163  
       Aug 14, 2019
    如果某一个数据反转之前可以用 int 来表示,但是反转之后不能用 int 来表示(int 长度不够,越界),这样的话运行的结果就有问题,建议楼主将 new_x 改为 long 类型,同时打印的时候用 printf("%ld",new_x);
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3218 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 14:49 · PVG 22:49 · LAX 07:49 · JFK 10:49
    ♥ Do have faith in what you're doing.