鱼C论坛

 找回密码
 立即注册
查看: 2078|回复: 5

请教,滴滴

[复制链接]
发表于 2020-6-24 23:59:12 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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  比较稳妥, 让人一眼就看懂
我也是新手, 有不足之处可以指正
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 08:16:30 | 显示全部楼层
结果不是 2 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 19:03:19 | 显示全部楼层
你进行fun没有接收,那有个屁用啊!只是把某个东西扔进函数。函数运算并不影响原来的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-26 15:13:12 From FishC Mobile | 显示全部楼层
结果应该是1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 13:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表