我在 Fedora 14 上写了一些低级的 c 代码,但是对这段代码发疯了。第一个数组未初始化为'0',第二个是。通过gdb几次,但它就像魔术一样。怎么了?
const int maxsize=100000;
char num[7];
char tnum[6];
int pos=0;
while(pos<(maxsize+1)) {
int c=0;
int j=0;
int myindex;
int tindex;
for(myindex=0;myindex<7;myindex++) num[myindex]='0';
for(tindex=0;tindex<6;tindex++) tnum[tindex]='0';
//....
}
我在里面打印了数组值gdb
,包括 asp num
和p tnum
as p num[0]
and p tnum[0]
。我也尝试初始化为纯 0,同样的事情也会发生。
这是调试器输出
Temporary breakpoint 1, main () at inversionscount.c:3
3 int main() {
Missing separate debuginfos, use: debuginfo-install glibc-2.13-1.i686
(gdb) s
5 const int maxsize=100000;
(gdb) s
6 int startarray[maxsize];
(gdb) s
14 int pos=0;
(gdb) s
15 while(pos<(maxsize+1)) {
(gdb) s
19 int c=0;
(gdb) s
20 int j=0;
(gdb) s
24 for(myindex=0;myindex<7;myindex++) num[myindex]='0';
(gdb) s
25 for(tindex=0;tindex<6;tindex++) tnum[tindex]='0';
(gdb) s
27 while( c=getchar()!="\n") {
(gdb) p num
$1 = "\370\377\277\270\367\377"
(gdb) p tnum
$2 = "000000"
(gdb)