一段关于atoi()函数的转换问题

跟着心跳走 2012-01-08 08:26:52
#include <stdlib.h>
#include <stdio.h>
int main()   
{   
char a[] = "-100" ;  
 char b[] = "123" ;  
 int c ;  
 c = atoi( a ) + atoi( b ) ;  
 printf("c = %d\n", c) ;  
 return 0;  
}  
 执行结果  c = 23
问题:为什么会是 c=23,而不是c=123呢?我个人认为在c = atoi( a ) + atoi( b ) ;中,atoi(a)=0,atoi(b)=123,所以
c=123,不知道我的答案对不对?
...全文
496 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-01-10
  • 打赏
  • 举报
回复
char a[] = "-100";//这样就会是0 (^_^)
siasjack 2012-01-10
  • 打赏
  • 举报
回复

#include <cctype>
  int my_atoi(const char* p){
  assert(p != NULL);
  bool neg_flag = false;// 符号标记
  int res = 0;// 结果
  if(p[0] == '+' || p[0] == '-')
  neg_flag = (*p++ != '+');
  while(isdigit(*p)) res = res*10 + (*p++ - '0');
  return neg_flag ? -res : res;
  }

这是实现atoi的程序,程序中有关于正负号的区分!
  • 打赏
  • 举报
回复
这个兄弟太搞笑了,你为什么认为该是0呢?讲讲
deandeanabcd123 2012-01-10
  • 打赏
  • 举报
回复
可以区分,相关的还是可以上网看看源码
luciferisnotsatan 2012-01-10
  • 打赏
  • 举报
回复
atoi认识负号,从它的返回类型int也能看出
jacknes009 2012-01-10
  • 打赏
  • 举报
回复
atoi 区分正负的
跟着心跳走 2012-01-10
  • 打赏
  • 举报
回复
谢谢大家!
bihackers 2012-01-09
  • 打赏
  • 举报
回复
atoi函数可以识别正负号的,你看到注释是那本书的饿.....
robin平安 2012-01-08
  • 打赏
  • 举报
回复
atoi()函数是可以区分 + - 号的,如果你想跳过 第一个负号可以使用 atoi( &a[1])..

一楼正解!
小耸 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nnrroo 的回复:]
你为什么会认为是 0 呢?

如果 atoi() 函数连个正负号都识别不出来, 这函数也太那个了......

你可以看看 atoi() 函数或者 atol() 的源代码. 里面有判断正负号的语句.
[/Quote]
++
AnYidan 2012-01-08
  • 打赏
  • 举报
回复
lz 认为应该是多少?

为了一个函数,要更改千年来大家的共识吗?
cookles13 2012-01-08
  • 打赏
  • 举报
回复
 C语言库函数名: atoi   
功 能: 把字符串转换成整型数.   
名字来源:array to integer 的缩写.   
原型: int atoi(const char *nptr);   
函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。

yuefy520 2012-01-08
  • 打赏
  • 举报
回复
你既然已经赋值.怎么会是0呢.
turing-complete 2012-01-08
  • 打赏
  • 举报
回复
一楼讲的是正确的,正负号有判断的。
狂且 2012-01-08
  • 打赏
  • 举报
回复
你为什么会认为是 0 呢?

如果 atoi() 函数连个正负号都识别不出来, 这函数也太那个了......

你可以看看 atoi() 函数或者 atol() 的源代码. 里面有判断正负号的语句.
Ever_lover 2012-01-08
  • 打赏
  • 举报
回复
看源码是解决此问题的最佳方式

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧