C 语言整数反转

2019-06-23 13:29:46 +08:00
 sunshinel
最近写了一个反转整数的 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 以后就输出正数了。请大神指点。
5403 次点击
所在节点    编程
6 条回复
pkookp8
2019-06-23 14:12:42 +08:00
断点给的 newx 是乘法之前的 newx
负数取余是负数
flag 拼写是不是错了
annoymous
2019-06-23 14:19:32 +08:00
符号取出来之后 输入取绝对值
sunshinel
2019-06-23 16:30:54 +08:00
已经解决了,不需要用 flage 来判断符号,直接反转即可。负数反转还是负数,不用 flage 来判断符号。
q8515620
2019-06-23 16:45:53 +08:00
既然已经解决了,那我就说个题外话吧,flag,不是 flage (🐶)
LLaMA2
2019-07-20 15:37:09 +08:00
我怀疑你这个有 BUG,假定你是三十二位的 int
你输入 幺零零零零零零零零九 看看反转后是多少
gaokevin163
2019-08-14 16:28:51 +08:00
如果某一个数据反转之前可以用 int 来表示,但是反转之后不能用 int 来表示(int 长度不够,越界),这样的话运行的结果就有问题,建议楼主将 new_x 改为 long 类型,同时打印的时候用 printf("%ld",new_x);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/576610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX