请看题:

#include<stdio.h>
int a=1;
int main(void)
{
int a=a;
printf("a=d%\n",a);
return 0;
}

问题很简单,就问会输出什么?无非就这几个答案:1,0,报错,随机数。那究竟是多少呢?当然我们先声明实际工作中很少有人会这么写,我们主要是借用此题给大家讲一些C的知识,其实本题主要涉及的知识点是全局变量和局部变量的问题,也就是变量作用域的问题。

首先进行简单分析:一开始声明全局变量a并赋值,此时变量a具有全局作用域,到这儿就出现了两种情况:一是如果在下面的各函数中未出现变量a的声明,但使用了变量a,这是合法有效的,此时的a就是我们一开始声明的全局变量,值就是1;第二种情况是如果在下面的各函数中再次出现对变量a进行声明的语句,也就是本题中的情况,那此时的a就跟开头的全局变量a不一样了,也就是此a非彼a,你可以把它理解为一个全新的变量,只不过它恰好也用字母a进行表示而已。

到这儿大家就应该明白了,在main函数中再次声明了一个新的变量a,此时未对变量进行初始化,再用a进行赋值,值当然是随机的了(这里好像只有vs中会报错,提示使用未初始化的变量a),另外还有一点要注意:有人说未初始化不是默认为0吗,所以输出的结果就为0了,提醒大家只有全局变量和static变量未初始化会赋值为0,放在BSS段,其他的未初始化是随机值,只不过很大概率是0,所以本题答案为随机值,如果改成static int a=a,那答案就是0了。

最新文章

  1. 在.NET Core 里使用 BouncyCastle 的DES加密算法
  2. Quartz实现任务调度
  3. shell (check return of each line)and sudoer
  4. Spring事务传播简介
  5. Windows 8.1/Server 2012 R2/Embedded 8.1 with Update 3(MSDN最新版)
  6. duilib relativepos属性导致控件错误的bug修复
  7. linux驱动系列之tftp(转)
  8. JSOI2014第三轮总结
  9. Redis 集群常见问题
  10. 从SG函数浅谈解决博弈问题的通法
  11. Nginx + ngx_lua安装测试【CentOs下】
  12. 老李分享:《Linux Shell脚本攻略》 要点(一)
  13. 【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
  14. poj-3522 最小生成树
  15. C# winform在关闭窗体的时候及时释放内存问题
  16. Maven pom文件标签解析大全
  17. Python的简单介绍
  18. Javascript继承1:子类的的原型对象----类式继承
  19. UdPloyer交付系统设计思路
  20. Oracle数据库SQLPLUS 连接显示 ??? 的解决

热门文章

  1. PWM通过RC低通滤波器模拟DAC
  2. ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
  3. 内核驱动编译之Makefile shell pwd路径问题
  4. 0x04
  5. Laravel/Lumen 分组求和问题 where groupBy sum
  6. JMeter进行压力测试时查看服务器的资源使用
  7. 日志框架-logtube
  8. IDEA中三种注释方式的快捷键
  9. Navicat15最新版本破解 亲测可用!!!(Navicat Premium 注册出现 No All Pattern Found! File Already Patched)
  10. 美化CMD