变量作用域专项
来源:互联网 发布:22周四维彩超正常数据 编辑:程序博客网 时间:2024/06/05 17:36
变量作用域专项
这道题弄懂,作用域问题感觉就差不多了
#include<stdio.h>int count = 3;int main(void){ int i, sum, count = 2; for(i=0,sum=0; i<count; i+=2,count++) //count = 2 { static int count = 4; count++; // count = 4++=5; count = 5++=6; if(i%2 == 0) { extern int count; count++; // count=3++; count=4++; sum += count; //sum=4; sum =9+5; } sum += count; //sum=4+5=9; } printf("%d %d\n",count, sum); return 0;}
这段代码其实考察的是变量作用域的知识,最终答案是4,20,仔细分析一下。
有两个知识点需要先说明下:
1.static成员存在作用域的问题,static成员并不是在函数内定义了在函数任何部位都可以访问,而是局限在大括号之间{ },也就是在这段大括号内static成员才有效,出了这个大括号就无法访问。
2.extern这个关键字指的是,它告诉编译器,这个变量已经在其他地方定义了,这里其他地方可以是其他文件,也可以是当前文件,更需要记住的是如果在当前文件,指的是作为全局变量存在与某处。
好了,如果以上知道了,就不难说了。
首先:
for(; i < count; i += 2,count++)
此处访问的是main函数第一句话定义的count = 2,然后在这个for循环里面又定义了static count,我们都不管他,因为程序最终输出的是此处的count,仔细分析,第一次循环count=2,然后count++ = 3,然后i变成了2,然后count++ = 4,最后终止,所以最终count输出的是4.
再来看sum的值,
static int count = 4;
说明在此{}里面访问到的将是这个count,但是在接下来的if()里面又有一个extern int count,于是乎找到了全局变量count,接下来就耐心的自己加一下了,同样,static成员以及extern int count初始化以后就不在初始化了。所以最终sum是20.
阅读全文
0 0
- 变量作用域专项
- static变量作用域
- 变量作用域2
- 变量作用域3
- 变量作用域1
- 变量作用域
- 变量作用域
- C++变量作用域
- 变量作用域
- JavaScript 变量作用域
- php变量作用域
- 变量的作用域
- javascript 变量作用域
- 变量的作用域
- js 变量作用域
- jsp变量作用域
- javascript变量作用域
- 变量作用域
- TCP/IP协议原理
- 写高质量OC代码52建议总结:40.用块引用其所属对象不要出现保留环
- moment.js的扩展方法
- ZooKeeper学习第一期---Zookeeper简单介绍
- 操作系统理论基础
- 变量作用域专项
- iOS 根据模型节点排序
- Android自动化测试之Monkey
- React Native入门(三)之Props(属性)和State(状态)
- Deeplearning4j 实战 (10):迁移学习--ImageNet比赛预训练网络VGG16分类花卉图片
- 欢迎使用CSDN-markdown编辑器
- ubuntu 安装配置snmp
- Docker安装使用及常用命令
- 万万没想到——手机数据原来还可以这样去备份