Zichenya 发表于 2020-6-24 23:59:12

请教,滴滴

下面这个程序
a值进函fun数之后
为什么返回的值不再自增
#include<stdio.h>
int fun(int a)
{
        return a;
}
main()
{
        int a=1,b;
        fun(a++);
        printf("%d",a);

}

pxxzhj 发表于 2020-6-25 02:27:56

写法很奇怪, 我也是初学者, 按你的代码跑了一遍
三种情况, 赋值先后问题.
1. a++, 这种情况下, a在main函数并没有自加1, 而是发生在参数传递之后,
             你可以尝试在函数内添加printf("%d\n",a), 可以看到实际上是2, 证明a的自加1操作发生在参数传递之后
2. a = a + 1这种情况下, a是先自身加1, 然后再赋值给自身, 再去传递参数
3. ++a, 这种情况下, a也是先自加1 , 再去传递参数.

a++ 本身我印象中是在当前行所有代码执行之后再去加1, 所以在混合语句里面建议少用吧, 因为我们都不怎么记得清楚这些东西的优先级
还是a = a + 1比较稳妥, 让人一眼就看懂
我也是新手, 有不足之处可以指正

永恒的蓝色梦想 发表于 2020-6-25 08:16:30

结果不是 2 吗?

405794672 发表于 2020-6-25 19:03:19

你进行fun没有接收,那有个屁用啊!只是把某个东西扔进函数。函数运算并不影响原来的值。

Cool_Breeze 发表于 2020-6-26 15:08:36

本帖最后由 Cool_Breeze 于 2020-6-26 15:35 编辑

#include<stdio.h>


int fun(int a)
{
    return a;
}
int main()
{
      int a=1,b;
      //a++; 返回a的值,等语句(段落)结束返回a+1的值
                //++a; 返回a+1的值
      b=fun(a++);//这里返回a ,fun(1), fun()返回1
      printf("%d\t %d",a,b);

}

jhanker 发表于 2020-6-26 15:13:12

结果应该是1
页: [1]
查看完整版本: 请教,滴滴