C语言 12.5 这道题怎么做 请写下运算过程
2个回答
展开全部
在主程序里的循环是执行两次k=f(a++),实际上,第一次的赋值被第二次覆盖了,所以只有第二次的赋值,才是有效的。再来看函数调用的内部,在函数f中,变量a和b都是局部变量,但是,变量c是一个静态变量,它的值在一次调用结束以后,会得以保留,在下一次调用时,c中保留的值继续有效。但是赋值语句是一个逗号表达式,而逗号表达式a=c++,b++的值是最后一部分的值,即b++的值,先取b原来的值0赋给a,然后b再自增。所以,两次调用函数f的返回值实际是完全一样的,静态变量在这个里面没有起到有效的作用。两次调用,每一次返回的值都是0。题目给出的备选答案中没有这个值,这是个错误。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询