C 对于循环:变量的增量和减量

C 对于循环:变量的增量和减量,c,for-loop,increment,continue,C,For Loop,Increment,Continue,我写了一个这样结构的代码 int function(){ int i, counter = 0; for(i=INTEGER; i>0; ++counter, --i){ if(condition){ //do stuff i+=2; continue; }

我写了一个这样结构的代码

int function(){
        int i, counter = 0;

        for(i=INTEGER; i>0; ++counter, --i){
               if(condition){
                   //do stuff
                   i+=2;
                   continue;
               }
               if(condition){
                   //do stuff
                   i+=35;
                   continue;
               }
               if(condition){
                   //do stuff
                   continue;
               }
               if(condition){
                   //do stuff
                   continue;
               }
         }
         return counter;
    }
我很难完全理解变量作为cicle参数的增量机制。 在上述情况下:

i变量的增加和减少如何能够很好地工作,而返回的计数器变量只有1个增加? 有可能吗? for语句中变量计数器的增加次数与for语句中变量i的减少次数相同

for(i=INTEGER; i>0; ++counter, --i){
++counter, --i
    for(i=INTEGER; i>0; ++counter, --i){
           if(condition){
               //do stuff
               i+=2;
               continue;
           }
           //...
     }
在continue语句之后,for语句的这一部分

for(i=INTEGER; i>0; ++counter, --i){
++counter, --i
    for(i=INTEGER; i>0; ++counter, --i){
           if(condition){
               //do stuff
               i+=2;
               continue;
           }
           //...
     }
被执行

实际上,这个循环使用continue语句

for(i=INTEGER; i>0; ++counter, --i){
++counter, --i
    for(i=INTEGER; i>0; ++counter, --i){
           if(condition){
               //do stuff
               i+=2;
               continue;
           }
           //...
     }
相当于以下内容

    for(i=INTEGER; i>0; ++counter, --i){
           if(condition){
               //do stuff
               i+=2;
               goto Label;
           }
           //...
     Label:;
     }

好了,伙计们,我调试代码时,错过了main结尾处的返回0。
这导致返回值错误。

您所说的正在发生,不应该发生。逗号运算符将两条语句组合在一起,使它们作为一条语句执行。如果执行了-1,则++计数器也应同时执行。正在发生其他事情。

不理解您的问题。请澄清@例如,如果INTEGER define value是10,那么在返回时变量计数器的值应该是10,对吗?相反,他的值是1。请发布任何人都可以运行的真实代码。还请在代码中添加输出printf语句以演示问题。他说,即使循环执行多次,变量计数器也只增加一次。他想知道这是否可能,是否是因为他使用了continue。@Anon316在这种情况下,我们想从您那里得到答案。坦白说,我也不明白这个问题。我的英语水平很差,顺便说一句:-好的,这也是我所知道的。但当我执行代码时,我只增加了一个。在我的代码中,变量计数器没有在其他地方使用。这很奇怪。@wing您确定循环有多个迭代吗?可能是由于变量i在循环体中的ti改变,循环只有一次迭代。但在代码中,您也修改了循环体中的i,而您只在for头中增加计数器,除非您触摸隐藏在//do stuff后面的部分中的计数器。你们怎么知道你们的循环输入了不止一次?那个么请删除你们的问题,因为这是一个简单的印刷错误。虽然类似的问题可能在这里的主题,这是一个解决的方式不太可能帮助未来的读者。这通常可以通过在发布前确定并仔细检查重现问题所需的最短程序来避免。它不允许我删除问题,我试过了,对吗now@moffeltje-除了正确理解逗号运算符可能对其他程序员有用之外。这难道不值得保留吗?@Anon316试着想象你正在搜索特定的信息,你会遇到这个问题,这个问题不清楚,每个人都对这个问题感到困惑,除了你。你会继续读下去,还是只看一本很多甚至很简单的书?@moffeltje-我明白你的意思。你说得对。对不起,先生,我误解了as的意思。我不想在这里争论。我删除了我的评论。如果我以任何方式伤害了你,对不起。我只是想说对。仅此而已。没有冒犯,我希望没有冒犯。我也删除了我的评论。结局好,一切都好。顺便说一下,你的英语很好。