首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简略的for死循环,难住一群人

2013-09-24 
简单的for死循环,难住一群人C语言,不是C++啊for(int ii0ii2ii++){printf(begin:%d\n, ii)somefun(&

简单的for死循环,难住一群人
C语言,不是C++啊


for(int ii=0;ii<2;ii++)
{
printf("begin:%d\n", ii);
somefun(&array[ii]);
printf("end:%d\n", ii);
}

ii的值始终是1,从来死循环.一开始我怕是跟全局变量重名,所以把i改成了ii,结果还是一样.
原来,int ii=0;是在for的上面定义的,又听别人的建议,加上C99标准,定义到里面了.

为了测试,这段代码改了一下.


for(int ii=0;ii<2;)
{
printf("begin:%d\n", ii);
int j=somefun(&array[ii]);
printf("end:%d\n", ++ii);
}


加了个int j,ii的值就变了,但不是正常的加了1,而是变成了个非常大的值.循环跳出了.
[解决办法]
代码

#include <stdio.h>
int main(void)
{

    for(int ii=0;ii<2;ii++)
    {   
        printf("begin:%d\n", ii);
        //  somefun(&array[ii]);
        printf("end:%d\n", ii);
    }   

    return 0;
}

结果

$ gcc for.c -std=c99
$ ./a.out 
begin:0
end:0
begin:1
end:1

//楼主什么情况?那有你说那么诡异呢?

[解决办法]
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

VC6:
To set a breakpoint when a variable changes value 
1.From the Edit menu, click Breakpoints.
2.Click the Data tab of the Breakpoints dialog box.
3.In the Expression text box, type the name of the variable.
4.Click OK to set the breakpoint. 



[解决办法]
C语言能编译通过吗?
[解决办法]
问题多半在你函数里面,估计越界了

热点排行