C语言问题,S和P为什么在第一次赋值操作之后值是0呢?

(gdb) l
1 #include
2
3 int main(viod)
4 {
5 int i = 0;
6 int *p;
7 for(i;i<5;i++)
8 {
9 int s = 5;
10 int q = 3;
(gdb)
11 }
12 }
(gdb) break 9
Breakpoint 1 at 0x4004fd: file test.c, line 9.
(gdb) r
Starting program: /home/ubuntu/Desktop/test

Breakpoint 1, main (viod=1) at test.c:9
9 int s = 5;
(gdb) p s
$1 = 0
(gdb) n
10 int q = 3;
(gdb) p s
$2 = 5
(gdb) p q
$3 = 0
(gdb) n
7 for(i;i<5;i++)
(gdb) p s
No symbol "s" in current context.
(gdb) n

Breakpoint 1, main (viod=1) at test.c:9
9 int s = 5;
(gdb) p s
$4 = 5
(gdb)

你这代码贴的太随意了吧,不容易看呀!

没怎么看懂f( ̄o ̄) . z Z

gdb显示 int s = 5;这一行时,应该没有执行这一句,此时你p s 打印出来的是s的默认值0,在你输入命令n,后 int s = 5赋值才执行,你在打印s时就看到所赋的值5了