atoi函数的问题

firsun 2009-04-05 09:49:43
C语言库函数名: atoi
功 能: 把字符串转换成整型数

看很多表达式求值都用atoi把字符转换为整数然后在赋给字符变量,

但用两次后,第二个结果为什么是0?


#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char c='49';
c=atoi(&c);
printf("%d",c);
c=atoi(&c);
printf("\n%d",c);
}
...全文
20723 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ludeng8 2011-10-20
  • 打赏
  • 举报
回复
chanllenger 2009-11-20
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
char *c="49";
printf("%d\n",atoi(c));

}
QUSHI314 2009-04-21
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char c='49'; //c其实是'9'
c=atoi(&c); //返回的是ASC码9
printf("%d",c); //现在c是ASC码9,字符对应那个,自己查
c=atoi(&c); //c对应的字符自然不是数字字符,所以atoi返回0
printf("\n%d",c);
}

为什么 执行c=atoi(&c);后c还是CHAR类型?
tianya0609 2009-04-06
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char c='49'; //首先字符赋值只能是一个,换成char c = '4'; 字符‘4’ASCII码 34H (0011 0100);
c=atoi(&c); //c的值已经为4,就相等于内存八位是0000 0100,即ASCII码为4H;
printf("%d",c);
c=atoi(&c); //所以不同的字符转换的结果肯定不一样,而且字符不是从‘0’~‘9’会示为非法字符,结
//果都是0
printf("\n%d",c);
}
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char c='49'; //c其实是'9'
c=atoi(&c); //返回的是ASC码9
printf("%d",c); //现在c是ASC码9,字符对应那个,自己查
c=atoi(&c); //c对应的字符自然不是数字字符,所以atoi返回0
printf("\n%d",c);
}
morris88 2009-04-05
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char c='49';
c=atoi(&c);
printf("%d",c);
c=atoi(&c);
printf("\n%d",c);
}


貌似atoi是将以'\0'结尾的字符串转换成int整形吧,不是转换单个字符的。
blh 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 firsun 的帖子:]
C语言库函数名: atoi
功 能: 把字符串转换成整型数

看很多表达式求值都用atoi把字符转换为整数然后在赋给字符变量,

但用两次后,第二个结果为什么是0?


C/C++ code#include<stdio.h>#include<stdlib.h>intmain(void)
{charc='49'; ==>?????
c=atoi(&c);
printf("%d",c);
c=atoi(&c); ==》 c已经不是你那个'49'
printf("\n%d",c);
}
[/Quote]

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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