请教,滴滴
下面这个程序a值进函fun数之后
为什么返回的值不再自增
#include<stdio.h>
int fun(int a)
{
return a;
}
main()
{
int a=1,b;
fun(a++);
printf("%d",a);
} 写法很奇怪, 我也是初学者, 按你的代码跑了一遍
三种情况, 赋值先后问题.
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比较稳妥, 让人一眼就看懂
我也是新手, 有不足之处可以指正 结果不是 2 吗? 你进行fun没有接收,那有个屁用啊!只是把某个东西扔进函数。函数运算并不影响原来的值。 本帖最后由 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);
} 结果应该是1
页:
[1]