C 语言,求输出结果

C 语言,求输出结果答案是4
具体问题写在图片上了

第1个回答  2019-03-17
#include <stdio.h>

int f(int a)
{
//  b无用,淆乱视线
int b = 0;
static int c = 3;
// 逗号优先级最低,这个式子等价于(a = c++), b++
// a于此处被赋值,可以无视从参数传入的a的初始值
// for第一次c=3, c->a, a=3, c=4, return 3
// for第二次c=4, c->a, a=4, c=5, return 4,此即答案
a = c++, b++; return (a);
}

main()
{
int a = 2, i, k;
for (i = 0; i < 2; i++) k = f(a++);
printf ("%d\n", k);
return 0;
}

本回答被提问者采纳
第2个回答  2019-03-17
当然你想先加一就写成++a
那个另一个问题,因为main函数的a和f函数的a是不一样的,return a赋给了k,所以a++过后应该是从定义的2加。main函数的a并没有被其他值改变
第3个回答  2019-03-17
是的 a++ 是先返回原值 然后再自加1的
相似回答