Redian新闻
>
这段代码为何要这样做?
avatar
这段代码为何要这样做?# Programming - 葵花宝典
s*r
1
一个整数转化为字符串的函数
不太理解里面为什么要用到log
希望大家指点一二
char* itoa(int n) {
char *s =NULL;
char *p;
int nz;

int mf = 0;
if(n>=0) {
nz=log(n)/log(10);

s=(char*)calloc(nz+1,sizeof(char));
p=s;
}else{
if(n==INT_MIN) {
mf=1;
n=-INT_MAX;
}
nz=log(-n)/log(10);
n=-n;
s=(char *)calloc(nz+2,sizeof(char));
p=s;
*p='-';
p++;
}
int pt=pow(10,nz);

while(pt>=1){

if(pt==1&&mf)
*p=(n/pt)+'0'+1;
else
*p=(n/pt)+'0';
p++;
avatar
r*r
2
算有多少位数字好分配内存给字符串

【在 s*****r 的大作中提到】
: 一个整数转化为字符串的函数
: 不太理解里面为什么要用到log
: 希望大家指点一二
: char* itoa(int n) {
: char *s =NULL;
: char *p;
: int nz;
:
: int mf = 0;
: if(n>=0) {

avatar
s*r
3
谢谢,那这里的mf是什么意思呢
另外还有
if(pt==1&&mf)
*p=(n/pt)+'0'+1;
else
*p=(n/pt)+'0';
为什么前面那个要加1后面这个不要呢?

【在 s*****r 的大作中提到】
: 一个整数转化为字符串的函数
: 不太理解里面为什么要用到log
: 希望大家指点一二
: char* itoa(int n) {
: char *s =NULL;
: char *p;
: int nz;
:
: int mf = 0;
: if(n>=0) {

avatar
k*f
4
这个代码乱七八糟的
如果n=0,log(0)是没有定义的
itoa怎么会需要浮点的log运算?

【在 s*****r 的大作中提到】
: 谢谢,那这里的mf是什么意思呢
: 另外还有
: if(pt==1&&mf)
: *p=(n/pt)+'0'+1;
: else
: *p=(n/pt)+'0';
: 为什么前面那个要加1后面这个不要呢?

avatar
m*e
5


【在 s*****r 的大作中提到】
: 一个整数转化为字符串的函数
: 不太理解里面为什么要用到log
: 希望大家指点一二
: char* itoa(int n) {
: char *s =NULL;
: char *p;
: int nz;
:
: int mf = 0;
: if(n>=0) {

avatar
s*r
6
能够推荐一个好的么,谢谢了
avatar
k*f
7
google: itoa source code

【在 s*****r 的大作中提到】
: 能够推荐一个好的么,谢谢了
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。