首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-08 
一段关于atoi()函数的转换问题#include stdlib.h#include stdio.hint main()   {   char a[] -100

一段关于atoi()函数的转换问题
#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,不知道我的答案对不对?

[解决办法]
你为什么会认为是 0 呢?

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

你可以看看 atoi() 函数或者 atol() 的源代码. 里面有判断正负号的语句.
[解决办法]
一楼讲的是正确的,正负号有判断的。
[解决办法]
你既然已经赋值.怎么会是0呢.
[解决办法]
 C语言库函数名: atoi   
功 能: 把字符串转换成整型数.   
名字来源:array to integer 的缩写.   
原型: int atoi(const char *nptr);   
函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。


[解决办法]
lz 认为应该是多少?

为了一个函数,要更改千年来大家的共识吗?
[解决办法]

探讨
你为什么会认为是 0 呢?

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

你可以看看 atoi() 函数或者 atol() 的源代码. 里面有判断正负号的语句.

[解决办法]
atoi()函数是可以区分 + - 号的,如果你想跳过 第一个负号可以使用 atoi( &a[1])..

一楼正解!
[解决办法]
看源码是解决此问题的最佳方式
[解决办法]
atoi函数可以识别正负号的,你看到注释是那本书的饿.....
[解决办法]
atoi 区分正负的
[解决办法]
atoi认识负号,从它的返回类型int也能看出
[解决办法]
可以区分,相关的还是可以上网看看源码
[解决办法]
这个兄弟太搞笑了,你为什么认为该是0呢?讲讲
[解决办法]
C/C++ code
    #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;  }
[解决办法]
char a[] = "-100";//这样就会是0 (^_^)

热点排行