如何 只用4行代码编写出一个从字符串到长整形的函数
这是曾经一个IT微软的面试题,当然意思是四条命令,目前我在网上看到的所有程序都是不满足,因为没有考虑负数。-123也是长整形函数,如果默认的话,应该是不能调用任何库函数的。请高手们积极发动你们的智慧!!!!
#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编辑过]
#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; }