#include <stdio.h>f(int a){static int tc=3;int tb=0;a=tc++,tb++;printf(“%d,%d\n”,tb,tc)return a;}main(){int a=15,i,k;for(i=0;i<2;i++)k=f(++a);printf(“%d\n”,k);}
答案是1,4 1,5 4
收起
这里你要弄清楚几个知识点1、i++ 与 ++i2、static 变量i++与++i都是自增,他们区别是:参与计算时i++会用原来的值参与计算,++i则是用自增后的值参与计算所以f函数里面 打印的值 tb,tc都是自增之后的值,tc是static变量,它的值不会重新初始化所以第一次进f函数的时候tb=0 tc=3,自增完之后tb=1 tc=4 a=3第二次进入f函数的时候tb=0 tc=4, 自增完之后tb=1 tc=5 a=4
第二次进入时为啥tb=还是最初值0,而tc却是4为啥不是3
我知道了知道了,没看见你说的static,不好意思
那我想问整个流程是先进入main函数判断i然后进入f函数中循环出来再判断i再循环,i条件不满足了再输出k吗?
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!