V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
sunshinel
V2EX  ›  编程

C 语言整数反转

  •  
  •   sunshinel · Jun 23, 2019 via Android · 6223 views
    This topic created in 2508 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   ·   5724 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 01:50 · PVG 09:50 · LAX 18:50 · JFK 21:50
    ♥ Do have faith in what you're doing.