Tag: 循环

循环使用unsigned char

如果i必须是一个unsigned char ,那么在不进入无限循环的情况下执行与此类似的东西的优雅方式是什么? for (unsigned char i = 0; i < 256; ++i) { printf("%d\n", i); }

为什么’continue’语句忽略’while’循环中的循环计数器增量,而不是’for’循环?

如果我在while循环中使用continue ,为什么它会进入无限循环,但在for循环中工作正常? 循环计数器增量i++在while循环中被忽略,如果我在continue之后使用它,但如果它在for循环中它可以工作。 如果continue忽略后续语句,那么为什么不忽略for循环的第三个语句,其中包含计数器增量i++ ? 在循环体之后执行for循环的第三个语句时,不是continue 之后的for循环的第三个语句并且应该被忽略吗? while(i<10) //causes infinite loop { … continue i++ … } for(i=0;i<10;i++) //works fine and exits after 10 iterations { … continue … }

如何停止循环arduino

我有这个循环,我将如何结束循环? void loop() { // read the pushbutton input pin: a ++; Serial.println(a); analogWrite(speakerOut, NULL); if(a > 50 && a < 300){ analogWrite(speakerOut, 200); } if(a = 300 && a <= 2499){ analogWrite(speakerOut, NULL); }

有没有办法显示LLVM自动矢量化的位置?

上下文:我在Objective-C库中有几个循环,它处理大型文本数组。 我现在可以看到它以单线程方式运行。 据我所知,LLVM现在能够自动矢量化循环,如Apple在WWDC会议上所述。 然而,它的方式非常谨慎,其中一个原因是由于CPU流水线操作而导致变量被修改的可能性。 我的问题:我怎样才能看到LLVM在哪里对我的代码进行了矢量化,更有用的是,我如何才能收到解释为什么它无法对我的代码进行矢量化的调试消息? 我敢肯定,如果它能看出为什么它不能自动矢量化它,它可以指出我,我可以进行必要的手动调整,使其可以矢量化。 如果我没有指出这个问题已经或多或少已经被问过,而且非常迟钝,我会在这里失职。

为什么这个语句在while循环中打印两次?

我写了这个简单的练习程序: #include #include #include #define CLASSES 3 #define STUDENTS 4 int grades[CLASSES][STUDENTS]; int main(void) { int i = 1; char t,k; while(i == 1) { printf(“\n\n\nMENU:\nEnter the grades(E)\nReport Grades(R)\nQuit(Q)\nYour choice: “); k = toupper(getchar()); printf(“Input entered… %c\n”, k); switch(k) { case ‘E’ : printf(“Entering the grades..\n”); break; case ‘R’ : printf(“Reporting the grades…\n”); break; case […]

如何在两个节点之间找到循环图中最长的路径?

我已经解决了这里发布的大多数问题,除了最长的路径之外。 我已经阅读了关于最长路径的维基百科文章,如果图形是非循环的,那么这似乎是一个简单的问题,而我的不是。 那我怎么解决这个问题呢? 蛮力,通过检查所有可能的路径? 我怎么开始这样做? 我知道它会在图表上获得很多~18000。 但我只是想开发它,因为它是项目所需要的,我只是测试它并在一个较小比例的图形上向教师显示,执行时间只有一两秒钟。 至少我完成了所有必需的任务,并且我有一个运行的概念certificate它可以工作但是在循环图上没有更好的方法。 但我不知道从哪里开始检查所有这些路径……

使用整数作为循环计数器变量更好吗?

我记得在某处读取最好使用整数作为循环计数器变量而不是char或short。 如果是,为什么? 它是否提供任何优化好处?

如何在用C编写的类似FORTH的语言解释器中实现LOOP

我在C中编写一个简单的基于堆栈的语言,并且想知道我应该如何实现某种循环结构和/或前瞻符号。 由于此页面的代码有点长(超过200行),我将它放在GitHub存储库中 。 编辑:主程序在文件stack.c 。 编辑:代码只是输入words ,类似于FORTH。 它使用scanf并从左到右工作。 然后它使用一系列if和strcmp来决定做什么。 真的是这样。

提高C循环的效率

我有一些工作的C代码,我希望提高效率。 我知道最好避免循环中的if语句但是我在这里努力解决这个问题。 任何人都可以建议我如何使以下代码更有效? for(iy=0;iy<Ny;iy++) { for(ix=0;ix<Nx;ix++) { if (ix==0) { pudx = (u[1][iy] + u[Nx-1][iy] – 2.0*u[0][iy])/(calc1); } else if (ix==Nx-1) { pudx = (u[0][iy] + u[Nx-2][iy] – 2.0*u[Nx-1][iy])/(calc1); } else { pudx = (u[ix+1][iy] + u[ix-1][iy] – 2.0*u[ix][iy])/(calc1); } if (iy==0) { pudy = (u[ix][1] + u[ix][Ny-1] – 2.0*u[ix][0])/(calc2); } else if (iy==Ny-1) { […]

我是否需要为我的作业创建三个单独的数组?

好的,首先我会解释我的任务。 对于这个分配,我必须使用动态内存分配,我没有遇到任何问题。 我遇到的问题是弄清楚正确的工作方式。 对于我的任务,我需要创建一个程序,提示用户输入他们有多少学生然后要求提供以下信息; 学生证,出生日期和电话号码。 我需要使用循环来提示用户输入所有学生信息。 我需要创建一个循环,它将扫描所有学生ID并使用他们的生日找到最老的学生(循环必须能够扫描超过3名学生)。 这是我的代码,我还没有做太多,因为我不确定从哪里开始。 我已经设置了动态内存分配,但我不知道如何处理其余部分。 请帮我。 谢谢。 #include #include int main (void) { int * studentData= NULL; int students; printf(“How many students are you entering records for:\n”); scanf(“%d”, &students); studentData=(int*)malloc((sizeof(int)*students)); }