Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用goto关键字的情况下编写C代码?_C_For Loop_If Statement_Logic_Goto - Fatal编程技术网

如何在不使用goto关键字的情况下编写C代码?

如何在不使用goto关键字的情况下编写C代码?,c,for-loop,if-statement,logic,goto,C,For Loop,If Statement,Logic,Goto,我使用goto关键字编写了以下代码: #包括 int main() { int i,j,k; 对于(i=1;i,您可以在循环内更改控制变量 for (i = 0; i < 2; i++) { for (j = 0; j < 4; j++) { for (k = 0; k < 8; k++) { if ((i == 2) && (j == 2) && (k == 2)) {

我使用goto关键字编写了以下代码:

#包括
int main()
{
int i,j,k;

对于(i=1;i,您可以在循环内更改控制变量

for (i = 0; i < 2; i++) {
    for (j = 0; j < 4; j++) {
        for (k = 0; k < 8; k++) {
            if ((i == 2) && (j == 2) && (k == 2)) {
                // change control variables to finish their loop
                k = j = i = 9; break; // exit all loops
            }
            printf("%d, %d, %d\n", i, j, k);
        }
    }
}
(i=0;i<2;i++)的
{
对于(j=0;j<4;j++){
对于(k=0;k<8;k++){
如果((i==2)和&(j==2)和&(k==2)){
//更改控制变量以完成其循环
k=j=i=9;中断;//退出所有循环
}
printf(“%d,%d,%d\n”,i,j,k);
}
}
}

您可以使用另一个变量,并使用它“通知”循环应该结束

#include<stdio.h>

int main()
{
    int i,j,k;
    int run_me = 1;
    for (i = 1; run_me && i <= 3; i++) {
      for (j = 1; run_me && j <= 3; j++) {
        for (k = 1; run_me && k <= 3; k++) {
          if (i == 2 && j == 2 && k == 2) {
             run_me = 0;
          } else {
             printf("%d %d %d\n ",i,j,k);***
          }
        }
      }
   }
   printf("\nOut of the loop");
   return 0;
}
#包括
int main()
{
int i,j,k;
int run_me=1;

对于(i=1;run_me&&我不在代码段中添加格式。在您想指出的行上添加注释,如果您需要更多地说明这些行,请在问题中为这些行添加解释。至于打破多级嵌套循环,首先,请尽可能避免嵌套循环,这样您就不会有这个问题。例如例如,您可以使用包含循环的函数,并检查函数返回值。否则,请使用额外的状态变量,如果
检查外部循环,则使用
。防止转到的第一个规则是重新构造代码。然后,在C中允许转到的情况有两种:中断内部循环和进行错误处理。这两种情况都需要大量的状态变量和其他人工变量(不可读,占用处理器周期)用于防止跳转的构造。你介意我修复缩进吗?我的眼睛受伤了!这可以被认为是一种黑客行为,并且不是通用的,循环可以不是
for
循环,而是
while
循环。然后你必须编写一条语句,使所有循环都失败,这通常是不可能的。
#include<stdio.h>

void function(void) 
{
    int i,j,k;
    for (i = 1; i <= 3; i++) {
      for (j = 1; j <= 3; j++) {
        for (k = 1; k <= 3; k++) {
          if (i == 2 && j == 2 && k == 2) {
             return;
          } else {
             printf("%d %d %d\n ",i,j,k);***
          }
        }
      }
   }
}

int main()
{
   function();
   printf("\nOut of the loop");
   return 0;
}