我用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
这些数字究竟是什么以及它们背后的“逻辑”是什么?
答案 0 :(得分:9)
他们背后没有逻辑。这是未定义的行为
void print_this_list(int size){
int list[size]; // not initialized
for (int i = 0; i < size; i++) {
printf("%d\n", list[i]); // still you access it and print it
}
}
list
未初始化并且您打印它的内容(这是不确定的)。因此,您获得一些随机垃圾值作为输出。
为了开始工作,您需要初始化它。你可以试试这个 -
void print_this_list(int size){
int list[size];
for (int i = 0; i < size; i++) {
list[i]=i; // storing value of i in it before printing
printf("%d\n", list[i]);
}
}
答案 1 :(得分:0)
如果你尝试
int x; // i define x as uninitialized variable some where in the memory (non empty)
printf("%d",x); // will print trash "unexpected value
// if i do this
int x=10;//i define x with initial value so i write over the trash was found in this block of the memory .
如果我打印出范围索引为
int ar[10];
for(int i=0;i<10;i++)
ar[i]=rand();
printf("%d\n",ar[10]);//out of index uninitialized index it will print trash .
我希望得到帮助