Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 尝试编写一个具有特定长度数组的函数,得到奇怪的不一致结果,并且没有错误_C_Linux - Fatal编程技术网

C 尝试编写一个具有特定长度数组的函数,得到奇怪的不一致结果,并且没有错误

C 尝试编写一个具有特定长度数组的函数,得到奇怪的不一致结果,并且没有错误,c,linux,C,Linux,我有: 或 我只需多次运行它,就会得到不同的结果。 但是,如果我取消注释您将在源代码中看到的那一行,它每次都会按预期工作 有人能看出我的错误吗?为什么索引4和12 我正试着做这里建议的事情:您已经找到了C的一个特性。不过,它通常是棘手错误的来源 问题在于线路: 0: 0.000000 1: 0.000000 2: 0.000000 3: 0.000000 4: 894113943650304.000000 5: 0.000000 6: 0.000000 7: 0.000000

我有:

我只需多次运行它,就会得到不同的结果。 但是,如果我取消注释您将在源代码中看到的那一行,它每次都会按预期工作

有人能看出我的错误吗?为什么索引4和12


我正试着做这里建议的事情:

您已经找到了C的一个特性。不过,它通常是棘手错误的来源

问题在于线路:

 0: 0.000000
 1: 0.000000
 2: 0.000000
 3: 0.000000
 4: 894113943650304.000000
 5: 0.000000
 6: 0.000000
 7: 0.000000
 8: 0.000000
 9: 0.000000
10: 0.000000
11: 0.000000
12: 0.002546
13: 0.000000
14: 0.000000
15: 0.000000
它只为变量
a
保留空间。它实际上并没有将其设置为任何值。因此,
a
将具有先前存在的数据的值。它通常为零,但有时是另一回事

a
设置为零的一种方法是使用初始值设定项声明它:

mat4f a;

C语言中既不是全局变量又不是静态变量的变量不保证初始化为任何特定值

那么在排队之后呢

mat4f a = {0};
元素的值可以是任何值。根据C语言标准,读取这些未初始化的值会调用未定义的行为——任何事情都可能发生


注释掉的行显式设置元素值,使其按预期工作。

删除该行时出错。您没有初始化数组
a
未初始化。和sdtio.h->stdio。h@BLUEPIXY修正了C99禁止使用thanksEmpty初始值设定项列表的问题。应该是
mat4fa={0}
mat4f a;
mat4f a = {0};
mat4f a;