首页 > 代码库 > c语言itoa函数的修正
c语言itoa函数的修正
k&r习题3-4,原始itoa不能处理最大负数(最大指的是绝对值最大而不是数值),因为最大负数绝对值比最大正数绝对值大1,n=-n这个表达式会溢出。
答案用的abs函数,避免了n=-n这个赋值。但我觉得将sign声明为unsigned类型,不用abs也行,如下:
答案用的abs函数,避免了n=-n这个赋值。但我觉得将sign声明为unsigned类型,不用abs也行,如下:
/* * compile with reverse.c */ void itoa(int n, char s[]) { int i; unsigned sign; if (n<0) sign=-n; i=0; do { s[i++]=sign % 10 + ‘0‘; }while ((sign /= 10)>0); if (n < 0) s[i++] = ‘-‘; s[i]=‘\0‘; reverse(s); }
c语言itoa函数的修正
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。