1696_C语言中变量默认初始化初值探究测试

2023-05-16

全部学习汇总: GreyZhang/c_basic: little bits of c. (github.com)

欢迎路过的YUAN类朋友相互沟通交流,也欢迎各位随时指点指正。以下是我的联系方式:

微信:grey0612

邮箱:greyzhang@126.com

C语言是我现在吃饭的家伙,但是我的家伙事儿确实是维护保养的不够好。很多细枝末节的东西没有学习到位,虽说日常工作中还没遇到多少问题,不过与同行打交道的时候遇到的问题着实不少。

刚刚工作的时候,遇到了一次局部变量没有初始化结果出现非预期结果的问题。离职之后尝试面试的时候,一个面试题问我使用什么函数可以把变量初值初始化为0,我也蒙了。我工作中,全局变量的初始化初值默认一直是0啊!其实,这个问题我到现在还不知道答案,根本没有对此进行深究学习。不过,从面试官那里得到的答案是这个跟编译器等多个因素是有关系的。

今晚在翻一本C语言的经典教程数目,再次看到了局部变量初始化的问题。不过书中没有指明编译器,也没有说明是否全局变量亦是如此。我手头暂时只有gcc,决定用gcc编译器做一个简单的测试,测试手段使用Python。通过重复变异执行,搜集全局量与局部量的10组结果。

局部变量初始化测试编写代码如下:

全局变量初始化测试编写代码如下:

测试脚本编写如下:

测试的数据结果如下:

局部变量测试:

Test for 1 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 2 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 3 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 4 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 5 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 6 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 7 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 8 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 9 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 10 times:

Compiling...

executing...

array_num[0] = 1

array_num[1] = 0

array_num[2] = 4203625

array_num[3] = 0

array_num[4] = 3

array_num[5] = 0

array_num[6] = 6

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

全局变量初始化测试:

Test for 1 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 2 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 3 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 4 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 5 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 6 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 7 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 8 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 9 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

Test for 10 times:

Compiling...

executing...

array_num[0] = 0

array_num[1] = 0

array_num[2] = 0

array_num[3] = 0

array_num[4] = 0

array_num[5] = 0

array_num[6] = 0

array_num[7] = 0

array_num[8] = 0

array_num[9] = 0

从上面展示的这些数据来看,全局变量的定义默认初始化数值应该是0。至少,从gcc编译器来看的话应该是0。而局部变量的初始化应该是有非0数值,但是出现0的概率也是蛮高的,我手头的这本书中说的变量(没有指明是否是局部变量)的初始化数值是随机的。我尝试修改了代码的文件名,尝试修改了目录,测试的数据跟之前的数据完全一样。测试不够充分,但是大致能够给我一点实际的说明信息了。

附加一下我使用的软件版本: gcc 4.9.2,Python 2.7.6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1696_C语言中变量默认初始化初值探究测试 的相关文章

  • 一个嵌入式产品的从研发到量产的流程(作者:gooogleman@foxmail.com)

    作者 xff1a gooogleman 64 foxmail com 一个嵌入式产品的开发流程是 1 了解清楚客户需求 2 模具开发 3 硬件工程师准备硬件 xff0c 物料选型 xff0c 原理图 xff0c PCB和模具工程师商议PCB
  • 【电赛国赛备赛笔记】【赛题经验分享会】

    存在的问题 光流问题 起飞后定不住飞行过程中方向太偏光照度对飞行稳定性的影响纹理变化对飞行稳定性的影响 目前还没有很好的解决办法 xff0c 但如果不限制使用器材的话 xff0c 用双目摄像头可能可以解决问题 赛题准备 视觉方面的算法和代码
  • APM32f003替换STM32进行低成本系统开发

    STM32F003是基于Arm Cortex M0内核的32位MCU xff0c 工作电压为2 4 3 6V xff0c 主频48MHz xff0c 内置16KB Flash 定时器 ADC 通信接口 APM32F003系列主频与STM32
  • 【VSCode】Windows 下搭建 C++ 环境

    文章目录 Part I 预备知识Part II 搭建过程Part III 安装较高版本的MinGW Part I 预备知识 MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境 MinGW 收集了一系列免费的Windo
  • 路由器开发————概念理解

    区别 xff1a 静态ip 可以直接使用Internet上网的IP xff08 相当于公网IP xff09 pppoe 从运营商那里动态获取的静态IP的过程就是PPPOE 运营商为了提高他手上拥有的静态IP的利用率 xff0c 而做出的动态
  • 干了三年java外包,我转AI了....

    谈及到程序员外包这件事 xff0c 我想我是比较有发言权的一个 xff0c 即使我现在已经从一个外包公司的JAVA开发转行做人工智能算法 我是2018年毕业的 xff0c 一毕业找的第一份工作就是一家外包公司 xff0c 主要做的是承接甲方
  • 人工智能的算法有哪些?AI常用算法

    人工智能 xff08 AI xff09 是一个非常广泛的领域 xff0c 其中包含许多不同的算法和技术 以下是一些常见的人工智能算法 xff1a 人工智能的算法有哪些 xff1f 机器学习 xff08 Machine Learning xf
  • 卡尔曼滤波五个公式各个参数的意义

    卡尔曼滤波五个公式各个参数的意义 wccsu1994 2018 11 30 10 49 33 45928 收藏 218 分类专栏 xff1a 卡尔曼滤波 版权 系统的状态方程为 xff1a 这个状态方程是根据上一时刻的状态和控制变量来推测此
  • FutureTask 示例

    1 简单示例 2 泡茶 1 简单示例 创建 FutureTask FutureTask lt Integer gt futureTask 61 new FutureTask lt gt gt 1 43 2 创建并启动线程 Thread t1
  • Centos6.5下进行PHP版本升级

    统计插件 WP Statistics 要求PHP5 4以上 xff0c 可本机PHP为5 3 3 xff0c 无奈只有对服务器PHP进行升级 xff0c 遂写下本文 Step1 xff1a 查看安装服务器当前安装版本 php V Step2
  • 一段日子的结束, 也是一段日子的开始

    一个朋友说的 xff0c 一段日子的结束 xff0c 也是另一段日子的开始 也正是我现在的状态 xff0c 我结束了一段往事 xff0c 也因此开始了一段日子 xff0c 曾经的曾经已离我远去 昨天和好朋友聊天到很晚 xff0c 谈了很多
  • 岁月静好

    不是说马年会马上转运的 xff0c 是不是蛇年的时候前半年太幸福了 xff0c 用了太多的好人品 xff0c 各种奖学金 xff0c 各种申请中标 xff0c 各种荣誉 xff0c 然后我要还了 小猴子说我开始会依赖人了 xff0c 哈哈
  • STM32 中重定向printf 和 scanf

    uart c 如果使用 pragma import use no semihosting 则在MDK中不勾选use Microlib 当前代码直接重定向没使用 pragma import use no semihosting 故需要选择us
  • Ubuntu环境下Pixhawk原生固件PX4的编译

    Ubuntu下Pixhawk原生固件PX4的编译这个问题困扰了两天时间 xff0c 可能是博主脑力不够 xff0c 主要是环境搭建不起来 xff0c 主要原因应该是路径的原因 xff0c 最后在大师傅的帮助下还好成功将路径搭建好 xff0c
  • 远程连接虚拟机的Network error: Connection timed out问题

    MobaXterm远程连接虚拟机的Network error Connection timed out问题 我使用的是MobaXterm远程连接我使用VMware创建的虚拟机 更新一下 xff1a 如果出现这种问题 xff0c 极大可能是服
  • springboot项目接入天猫精灵

    springboot项目接入天猫精灵 最近工作需要使用到天猫精灵的语音功能 xff0c 大体是通过呼叫对应的 调用词 实现携带参数 xff0c 然后调用我项目中的接口 xff0c 以实现对应的业务 所以在此简单的记录下使用过程 实际上 xf
  • Lesson 9.2&9.3&9.4 黑箱:不可解释的深层神经网络&探索多层神经网络:层vsh(z)

    二 黑箱 xff1a 深层神经网络的不可解释性 首先从结构上来看 xff0c 多层神经网络比单层神经网络多出了 中间层 中间层常常被称为隐藏层 xff08 hidden layer xff09 xff0c 理论上来说可以有无限层 xff0c
  • UnicodeEncodeError: 'gbk' codec can't encode character ...

    使用Python写文件的时候 xff0c 或者将网络数据流写入到本地文件的时候 xff0c 大部分情况下会遇到 xff1a UnicodeEncodeError 39 gbk 39 codec can 39 t encode charact
  • 一文简单了解并构建DockerFile

    GreatSQL社区原创内容未经授权不得随意使用 xff0c 转载请联系小编并注明来源 GreatSQL是MySQL的国产分支版本 xff0c 使用上与MySQL一致 作者 xff1a 蟹黄瓜子文章来源 xff1a GreatSQL社区投稿

随机推荐

  • 头文件中定义和声明的问题

    头文件中定义和声明的问题 1 头文件中不可以放变量的定义 xff01 一般头文件中只是放变量的声明 xff0c 因为头文件要被其他文件包含 include xff0c 如果把定义放在头文件的话 xff0c 就不能避免多次定义变量 C 43
  • Apache中更改PHP版本型号

    如何对服务器PHP版本进行升级 xff0c 详看我另外一篇博文 xff0c 这篇文章我们将讲述如何在Apache中更改PHP版本型号 Step1 xff1a 查看Apache用的PHP什么版本 新建一个文档 xff0c 命名为info ph
  • 简述AGV通信接口标准-VDA5050

    引言 德国汽车工业协会 德语 xff1a Verband der Automobilindustrie e V 简称VDA xff0c 通过 其 34 VDA 5050 34 接口 xff0c 早在2019年起 xff0c 不同制造商的车辆
  • C语言结束输入(两种方法)

    方法1 xff1a 输入数据 while getchar 61 39 n 39 scanf 34 d 34 amp Data data i 43 43 61 Data 方法2 xff1a for i 61 0 i lt 100 amp am
  • OpenCV(项目)车牌识别3 -- 模板匹配

    目录 一 基础理论 1 思想 2 大致过程 二 详细过程 1 首先需要模板库 2 得到模板 3 原图限定大小 4 模板匹配 5 匹配所有子文件夹 xff0c 保存最佳得分 xff08 最匹配项 xff09 三 大致过程 xff08 细分类
  • PMP项目管理中的重要角色

    PMP及PMBOK有个大问题 xff0c 就是没有统一的角色职责及流程 xff0c 考试也是随意性很强 xff0c 这给考生带来很多困扰 一个管理体系 xff0c 首先是人员分工安排 比如 xff1a PRINCE2 xff0c 明确的组织
  • 书房再次升级啦~~

    国庆长假 xff0c 在家里面一顿折腾 xff0c 墙全部重新粉刷 xff0c 书房 卧室 客厅三种不同颜色 书房的颜色是当时在装饰城的展厅里面偷偷扣的墙皮 xff0c 在多乐士店色卡里面对出来的 xff0c 哈哈 ps 这篇日志的照片是用
  • 基于K近邻法的手写数字图像识别

    数字图像处理课程论文 题目 xff1a 数字图像识别 摘要 模式识别 PatternRecognition 是一项借助计算机 xff0c 就人类对外部世界某一特定环境中的客体 过程和现象的识别功能 xff08 包括视觉 听觉 触觉 判断等
  • Ubuntu 16.04升级内核到20.04

    一 首先需要从16 04 18 04 sudo mv etc apt sources list sudo mv etc apt sources list d list 1 改变源 xff08 粘贴下面这一段到终端并运行 xff09 cat
  • 互斥和二进制信号量的使用

    1 二进制信号量 semBCreate SEM Q FIFO SEM Q PRIORITY SEM EMPTY SEM FULL 有两个作用 xff1a xff08 1 xff09 任务间的互斥 xff0d xff0d 同一个任务获取和释放
  • 【C++】关于以下划线开头的变量名

    系 统头文件里将宏名 变量名 内部函数名用 34 34 开 头就是为了避免与用户用的名字冲突 因为当你 xff03 include 系 统头文件时 xff0c 这些文件里的名字都有了定义 xff0c 如果与你用的名字冲突 xff0c 就可能
  • 1689_MATLAB处理Excel文件提升篇

    全部学习汇总 xff1a GreyZhang g matlab MATLAB once used to be my daily tool After many years when I go back and read my old lea
  • 1690_Python中的复数数据类型

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 之前总结的知识中设计的数据类型有整形 浮点 字符串等 xff0c 这些类型表示的都是
  • linux 命令终端提示符显示-bash-4.1#

    昨晚对服务器自带Python升级后 xff0c 终端就不是以前root 64 主机 43 路径的显示方式了 查了很多资料 xff0c 有人说是root目录下 bash profile和 bash两个文件缺失 xff0c 但我的这两个文件是存
  • 1691_python学习笔记之week3_递归

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 最初接触递归的时候觉得这个有点不好理解 xff0c 怎么能够有这种思维方式 xff1
  • 1692_Git版本控制管理 21-40

    全部学习汇总 xff1a GreyZhang toolbox 常用的工具使用查询 xff0c 非教程 xff0c 仅作为自我参考 xff01 github com 我曾经多次在工作中接触软件版本管理 xff0c 接触过多个公司的软件版本管理
  • 1693_Python处理Excel学习小结 21-41

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 说起来这是我来到北京之后开始接触的第一个新技术 xff0c 我对此痴迷 xff0c
  • 1694_week1_MIT使用Python编程学习手记1

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 首先说明一下 xff0c 这部分信息的整理只是我个人的理解 由于自己的知识功底以及英
  • 1695_week2_算法与函数(MIT使用Python编程学习手记)

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 首先说明一下 xff0c 这部分信息的整理只是我个人的理解 由于自己的知识功底以及英
  • 1696_C语言中变量默认初始化初值探究测试

    全部学习汇总 xff1a GreyZhang c basic little bits of c github com 欢迎路过的YUAN类朋友相互沟通交流 xff0c 也欢迎各位随时指点指正 以下是我的联系方式 xff1a 微信 xff1a