分类：电脑/网络-程序设计
问题：C语言高精度算法中的问题我想用一下这种方法编写高精度算法，但是遇 
我想用一下这种方法编写高精度，但是遇到一个问题，下面是我编写的一小部分，作用是把传进去的长整型的数转化存进一个buffer 这个数组中，接着就是我要提问的关键，也就是需要大家帮我解答的地方下面那个for 循环的作用，麻烦大家尽可能地详细地解答吧，我老师给我的注释如下，但是我看不懂，麻烦大家啦！~~如果回答的好我再加分啊！~~make_number(long n){     char  buffer[16];        /* assume long has 16 digits*/     int   len, i;我想用一下这种方法编写高精度，但是遇到一个问题，下面是我编写的一小部分，作用是把传进去的长整型的数转化存进一个buffer 这个数组中，接着就是我要提问的关键，也就是需要大家帮我解答的地方下面那个for 循环的作用，麻烦大家尽可能地详细地解答吧，我老师给我的注释如下，但是我看不懂，麻烦大家啦！~~如果回答的好我再加分啊！~~make_number(long n){     char  buffer[16];        /* assume long has 16 digits*/     int   len, i;     NUMBER *u;     len = sprintf(buffer, "%d", (n >= 0) ? n : -n);     for (i = 0; buffer[i] != '\0'; i++) /* convert to bin*/          buffer[i] = buffer[i] - '0'; 
回答：你的程序给的也太残缺了吧？
刚开始，buffer里面是16个数字的ASCII码（字符形式）
在for循环里面，buffer自减'0'的话就成了每位数字的二进制码了，比如
开始：
buffer[0]=‘2’；buffer[1]='5';
则实际数组中存储的是2，5的ascii码分别为0011 0010(50)，0011 0101(53)，for循环时自减‘0’（0011 0000）之后就成了
buffer[0]=0000 0010=2,buffer[1]=0000 0101=5;
所以循环之前buffer中是每位数字的ASCII码，之后数组中存储的是每位数字的二进制真值。