【问题标题】:What's wrong with my for loop?我的 for 循环有什么问题?
【发布时间】:2011-04-23 14:54:48
【问题描述】:

我正在使用 lite-C(与 C 语法完全相同)制作游戏。我不能让这个循环工作。 它在编译时给了我一个错误。
for(int i = 0; i < (cantenemigu * 3); i += 3)

我有一个数组,其中包含在哪里创建敌人的信息。 该数组包含 x,y,z 坐标。
cantenemigu 是阵列中敌人的数量。

通过这个循环,我将获取每个敌人的信息并创建它。

[编辑] 答案没有奏效。我添加了 ;写帖子的时候不小心。

也许问题出在其他地方;

这里是孔部分。

int cantenemigu = 3;
var posenemigu[] = {-900, 550, -10, -1100, 1600, -10, 70, 1680, 20};
void load_enemigunan()
{ 
 for(int i = 0; i < (cantenemigu * 3); i += 3) 
 {
  ent_create("targetr.mdl",vector(posenemigu[i],
             posenemigu[i + 1],
             posenemigu[i + 2]),NULL);
 } 
}

如果我不添加

这是代码

我解决了。

这行得通。

int i
for(i = 0; i < 3*cantenemigu; i += 3)
{
    ent_create("targetr.mdl",vector(posenemigu[i],
                                                posenemigu[i + 1],
                                                posenemigu[i + 2]),NULL);
}

在 C# 中它之前没有被声明过。我认为在 C 中也是如此。(或者可能是编译器中的错误)。

【问题讨论】:

  • 请问错误信息是什么?
  • 究竟是什么错误?介意把它贴在这里吗?
  • @ChaosPandion 编译器给出了语法错误。抱歉忘记写了?

  • 他的代码不在里面。有时我使用 html 来格式化问题
  • 您能否将帖子编辑为 1)使代码与您的程序中的内容完全匹配(您说分号是偶然的,但它们仍然存在,并且出于某种原因有一个
    ), 2) 包含编译器的错误信息?

标签: c arrays loops for-loop


【解决方案1】:

for (int i = 0; i &lt; (cantenemigu * 3); i += 3)

i += 3 后面不应该有任何;

【讨论】:

    【解决方案2】:

    尝试将您的代码更改为:(注意我所做的是将i 的声明移到for 循环之外。

    int cantenemigu = 3;
    var posenemigu[] = {-900, 550, -10, -1100, 1600, -10, 70, 1680, 20};
    void load_enemigunan(){ 
        int i;
        for(i = 0; i < (cantenemigu * 3); i += 3){
             ent_create("targetr.mdl",vector(posenemigu[i],
                 posenemigu[i + 1],
                 posenemigu[i + 2]),NULL);
         } 
    }
    

    【讨论】:

    • 您只晚了 5 分钟才发布。这解决了问题。它是编译器错误吗?
    • @Aaron,不,这不是编译器错误,它是标准 C 语法(不是允许您最初编写的 C99 语法)。 FWIW,如果这解决了问题,这里的礼仪是接受答案。
    • 是的,我知道。对不起。我不会说英语。对不起,如果它听起来很糟糕。感谢您的回答。我想说的是,我只是以同样的方式解决了它。
    • C99 是标准 C。只是很多实现不符合现代标准。
    • @R 我的意思是它是 C90,而不是 C99...什么 gcc,例如将调用简单的“C”。
    【解决方案3】:

    摆脱第三个;

    for(int i = 0; i < (cantenemigu * 3); i += 3) 
    

    【讨论】:

      【解决方案4】:

      您对vector 的调用似乎缺少右括号。

      ent_create(
          "targetr.mdl",
          vector(
              posenemigu[i], 
              posenemigu[i + 1], 
              posenemigu[i + 2],
              NULL
      );
      

      【讨论】:

      • @Aaron - 请发布编译器给你的确切错误。
      【解决方案5】:
      for(int i = 0; i < (cantenemigu * 3); i += 3;) 
      

      什么是错误?最后一个分号不应该在那里。

      什么是循环体?

      cantenemigu 是什么类型的变量?可以强制到int吗?

      【讨论】:

      • 我真的希望 cantenemigu 是一个特定领域的术语,因为它对我来说看起来像是胡言乱语。
      • @ChaosPandion 我说的是 papiamentu。它代表 cantidad di enemigu(敌人的数量)。
      猜你喜欢
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多