我创建了C这个小软件:使用C的数组 - 这些数字是什么?
#include <stdio.h>
#include <stdlib.h>
void print_this_list(int size){
int list[size];
for (int i = 0; i < size; i++) {
printf("%d\n", list[i]);
}
}
int main(int argc, char *argv[]){
print_this_list(25);
return 0;
}
执行的结果非常有趣(显然)随机数:
-1519340623
859152199
-1231562870
-1980115833
-1061748797
1291895270
1606416552
32767
15
0
1
0
104
1
1606578608
32767
1606416304
32767
1606423158
32767
1606416336
32767
1606416336
32767
1
Program ended with exit code: 0
究竟那些是什么数字,什么是“逻辑“在他们后面?
垃圾值,它可以是任何东西! **未定义的行为**! –
确切地说,它是**不确定**,标准定义为未指定(即有效但任意值)或陷阱。与UB相反,UB原则上可能意味着任何事情,包括随机值或优化器剥离整个函数,甚至是严重不良的行为。根据标准的措辞可能发生的最糟糕的事情是陷阱(即程序终止)。 – Damon
@Damon读取陷阱会导致UB,因此使用不确定性会导致UB,除非您可以证明系统上没有陷阱。 [更详细的答案](http://stackoverflow.com/a/25074258/1505939) –