为什么索引值为0时无输出

时间:2019-02-07 05:34:45

标签: c

将index的值从o更改为1。循环为打印值。为什么将索引分配为0时不打印任何值?

当前i = 0-无输出 使i = 1-无限循环

#include<stdio.h>

int main()
{
    for(int i = 0;i++;i<100)
    {
        printf("Mahesh\n");
    }
}

enter code here

4 个答案:

答案 0 :(得分:1)

C for loop结构:

for ( init; condition; increment )

您实际上已经在条件的位置添加了i++,在增量的位置添加了i<100

C中for loop的流控制:

    首先执行
  • init步骤,并且仅执行一次。
  • 接下来评估条件,如果条件为True,则执行循环主体。如果为False,则循环的主体将不执行,并且流程将跳转到for循环之后的下一条语句。
  • 循环主体执行一次后,流控制跳至增量语句,然后再次评估条件。
  • 循环的主体,条件和增量步骤以相同的顺序重复进行,直到条件变为False,然后for循环终止。

您的循环是:

for(int i = 0;i++;i<100)

在此,您将i++作为条件。现在,在此i中首先求值,然后是++。由于i is 0,当条件评估为False时,它导致循环退出。但是,如果您更改i to 1,则条件(即i)的计算结果为True,并进入循环。

如果您没有故意这样做,则需要如下所示的循环:

for (int i = 0; i < 100; i++)

答案 1 :(得分:1)

C语言中for循环的语法如下:

for ( init; condition; increment ) {
   statement(s);
}

-init:使用您要从其开始迭代的值初始化索引变量。

-condition:迭代继续进行直到满足的条件

-incremenet:指示您希望程序通过多少来索引索引

在您的示例中,因此应为:

for(int i = 0; i < 100; i++){
    //yourcode
}

希望有帮助

答案 2 :(得分:0)

for循环的参数为:

for (int i=0; i < payloadDTOList.size(); i++) {
    PayloadDTO payloadDTO = (PayloadDTO) payloadDTOList.get(i);       
    if(payloadDTO.getEntType().equals(CommonConstants.CUSTOMENTTYPEROLEID.RES_ROLE_TYPE)) {
      resRoleNameList.add(payloadDTO.getEntName());
    }
}

初始化可以用逗号分隔多个。 如果条件为1(或值TRUE,表示与1相同),则条件将继续;如果条件不满足(即值0(或FALSE)),则条件将中断。您也可以使用&&或||来具有多个条件。或逗号。 第三个参数是您要在下一次迭代中执行的操作。它也可以有多个命令。我建议您运行以下代码并对其进行更改以观察结果:

    for(initialization; Condition; Next iteration initialization){
    //code
    }

答案 3 :(得分:0)

#include<stdio.h>

int main()
{
    int i = 0;
                            // Postfix Increment Operator
    for (i = 0; i++; i<100) // Condition is false, Because the i is Zero
    {
        printf("Mahesh");
    }

    printf("%d", i);        // i outputs One here

                            // Prefix Increment Operator
    for (i = 0; ++i; i<100) // Condition is True, Because the i is One
    {
        printf("Mahesh");
    }
}