如何 只用4行代码编写出一个从字符串到长整形的函数
这是曾经一个IT微软的面试题,当然意思是四条命令,目前我在网上看到的所有程序都是不满足,因为没有考虑负数。-123也是长整形函数,如果默认的话,应该是不能调用任何库函数的。请高手们积极发动你们的智慧!!!!
2017-03-31 22:11
程序代码:
#include<stdio.h>
long f(char *str, long n)
{
if (*str){
return f(str + 1, n * 10 + (*str - '0'));
}
return n;
}
int main(void)
{
char str[20] = "123456";
printf("%lu\n", f(str, 0));
return 0;
}
[此贴子已经被作者于2017-4-1 00:47编辑过]
2017-04-01 00:45

2017-04-01 08:19
程序代码:#include <stdio.h>
long stold( const char* s )
{
long r = 0;
for( long sign=*s=='-'?(++s,-1):(*s=='+'?(++s,+1):+1); *s; r=sign*(sign*r*10+(*s++-'0')) );
return r;
}
int main( void )
{
printf( "%#ld\n", stold("123") );
printf( "%#ld\n", stold("+123") );
printf( "%#ld\n", stold("-123") );
printf( "%#ld\n", stold("0") );
return 0;
}
2017-04-01 08:47
2017-04-01 21:40
2017-04-02 12:32

2017-04-04 16:06