先有我后有天 发表于 2021-11-18 15:59

C语言编程题求助

这个函数功能是将一个整数存放到数组中,存放时按逆时针存放。但是这个递归里面的(a++,a--)参数有点看不懂

#include "stdio.h"

void convert (char *a,int n)
{
    int i;
    if((i=n/10) !=0)
      convert((a++,a--),i);//

    *a= n%10+'0';//
}
char str[10]="    ";
main()
{
    int number=12345;
    convert(str,number); //
    puts(str);
}

chill66 发表于 2021-11-18 16:12

这是C语言自增(++)和自减(--),自增自减完成后,会用新值替换旧值,将新值保存在当前变量中。

yacc 发表于 2021-11-18 16:18

感觉是装X的写法,这种括号+逗号的就是前面都运行一遍,然后返回最后一项的结果,比如
b = (a++,a--);
应该等价于
a++;
b = a;
a--;

就是返回a+1然后把a还原。可能是指针操作的习惯写法?但是没见过的话确实可读性要低一些

PaoPaoCao 发表于 2021-11-18 16:18

变量作用域的问题?

yacc 发表于 2021-11-18 16:20

但是习惯写法好像也不像,你把(a++,a--)直接换成a+1,看看效果有区别没

先有我后有天 发表于 2021-11-18 16:21

chill66 发表于 2021-11-18 16:12
这是C语言自增(++)和自减(--),自增自减完成后,会用新值替换旧值,将新值保存在当前变量中。

这个我懂,但是不知道这函数参数里面这样写是什么意思,有什么意图,有什么作用

先有我后有天 发表于 2021-11-18 16:22

yacc 发表于 2021-11-18 16:20
但是习惯写法好像也不像,你把(a++,a--)直接换成a+1,看看效果有区别没
结果和没改的结果一样,果然就是装逼写法?

yacc 发表于 2021-11-18 16:26

先有我后有天 发表于 2021-11-18 16:22
结果一样,果然就是装逼写法?

不明觉厉,不知道有没有其他的考虑

先有我后有天 发表于 2021-11-18 16:27

yacc 发表于 2021-11-18 16:26
不明觉厉,不知道有没有其他的考虑

结果一样就行,也是第一次见这种写法

tiancaiashuai 发表于 2021-11-18 16:36

昨天刚学习前置递增和后置递增,后置递增先运算表达式,再自加1,前置 递增刚好相反。
页: [1] 2
查看完整版本: C语言编程题求助