1696 您所在的位置:网站首页 c语言maxn 1696

1696

2023-05-13 12:59| 来源: 网络整理| 查看: 265

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

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

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

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

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

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

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

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

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

测试脚本编写如下:

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

测试的数据结果如下:

局部变量测试:

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有