一个简单但能考察C语言基础的题目
2024-09-07 21:10:00
请看题:
#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了。
最新文章
- 在.NET Core 里使用 BouncyCastle 的DES加密算法
- Quartz实现任务调度
- shell (check return of each line)and sudoer
- Spring事务传播简介
- Windows 8.1/Server 2012 R2/Embedded 8.1 with Update 3(MSDN最新版)
- duilib relativepos属性导致控件错误的bug修复
- linux驱动系列之tftp(转)
- JSOI2014第三轮总结
- Redis 集群常见问题
- 从SG函数浅谈解决博弈问题的通法
- Nginx + ngx_lua安装测试【CentOs下】
- 老李分享:《Linux Shell脚本攻略》 要点(一)
- 【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
- poj-3522 最小生成树
- C# winform在关闭窗体的时候及时释放内存问题
- Maven pom文件标签解析大全
- Python的简单介绍
- Javascript继承1:子类的的原型对象----类式继承
- UdPloyer交付系统设计思路
- Oracle数据库SQLPLUS 连接显示 ??? 的解决
热门文章
- PWM通过RC低通滤波器模拟DAC
- ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
- 内核驱动编译之Makefile shell pwd路径问题
- 0x04
- Laravel/Lumen 分组求和问题 where groupBy sum
- JMeter进行压力测试时查看服务器的资源使用
- 日志框架-logtube
- IDEA中三种注释方式的快捷键
- Navicat15最新版本破解 亲测可用!!!(Navicat Premium 注册出现 No All Pattern Found! File Already Patched)
- 美化CMD