Если вам не нравятся отладчики, вы можете обмануть:
int main() {
int x;
for(x=0;(printf("testing %d\n", x) || 1) && (x < 10); x++)
printf("%d\n",x);
return 0;
}
который печатает
testing 0
0
testing 1
1
testing 2
2
testing 3
3
testing 4
4
testing 5
5
testing 6
6
testing 7
7
testing 8
8
testing 9
9
testing 10
Если вы хотите сделать все правильно и научиться отлаживать программное обеспечение, начните с чтения this .
Вот сеанс GDB с кодом выше. Вы можете посчитать, сколько раз попадет тестовая линия цикла. Сейчас 11.
$ gdb loop
GNU gdb (GDB) 7.0.1-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/nathan/c/loop...done.
(gdb) break 6
Breakpoint 1 at 0x4004ec: file loop.c, line 6.
(gdb) run
Starting program: /home/nathan/c/loop
Breakpoint 1, main () at loop.c:6
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb) n
testing 0
7 printf("%d\n",x);
(gdb)
0
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 1
7 printf("%d\n",x);
(gdb)
1
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 2
7 printf("%d\n",x);
(gdb)
2
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 3
7 printf("%d\n",x);
(gdb)
3
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 4
7 printf("%d\n",x);
(gdb)
4
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 5
7 printf("%d\n",x);
(gdb)
5
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 6
7 printf("%d\n",x);
(gdb)
6
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 7
7 printf("%d\n",x);
(gdb)
7
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 8
7 printf("%d\n",x);
(gdb)
8
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 9
7 printf("%d\n",x);
(gdb)
9
6 for(x=0; (printf("testing %d\n", x) || 1) && (x < 10); x++)
(gdb)
testing 10
8 return 0;
(gdb)
9 }