sunshinel
V2EX  ›  编程

C 语言整数反转

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