无法更改循环中的数组

时间:2015-06-02 03:06:13

标签: c arrays for-loop

我开始使用C语言编写一些简单的程序,但我遇到了特定代码的问题。程序应该生成一个由3个元素组成的数组,从用户那里得到一个输入,并根据输入改变一些数组元素。但我不知道为什么代码会跳转到第一个for循环 这是代码的一部分:

int lock[3] = {3, 3, 3}, moves; 
char move;

while (1) 
{
    scanf("%c", &move);

    if (move == 'r' || move == 'R') 
    {
        for (int i = 1; i == 2; i++) 
        {
            lock[i]++;
            if (lock[i] == 4) lock[i] = lock[i] % 3;
        }

        printf("Lock :");
        for (int j = 0; j < 3; j++) 
        {
            if (j == 2) printf(" %d.\n", lock[2]);
            else printf(" %d,", lock[j]);
        }

        moves++;
    }
}

它的输出是

Lock : 3, 3, 3.

但它应该返回

Lock : 3, 1, 1.

谁能告诉我发生了什么?

5 个答案:

答案 0 :(得分:4)

此循环永远不会执行:

var mongoose = require('mongoose');
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;

var morgan = require('morgan');
var bodyParser = require('body-parser');

var uri = 'mongodb://localhost/interest';
var db = require('mongoose').connect(uri);

app.use(morgan('dev'));
app.use(bodyParser.urlencoded({
    extended: true
}));
app.set('view engine', 'ejs');

app.listen(port);

console.log('shit happens on port ' + port);

app.get('/', function(req,res){
   res.render('index.ejs');
});



app.post('/', function(req,res){
var content = new Int(req.body.content);
    content.save(function(err){
        if(err){
            return handleError(err);
        } else {
            console.log('your form has been saved');
        }
    })
});


require('./models/schema.js');

for (int i = 1; i == 2; i++) 的值从i开始,但循环继续的条件是1,其计算结果为false。

答案 1 :(得分:1)

for (int i = 1; i <= 2; i++) 

答案 2 :(得分:1)

==是你的相等运算符,所以它检查在循环开始时i是否等于2。但是当你写作

   for(i=1;i==2;i++)

我被初始化为1,所以i == 2是假的。因此循环永远不会执行。请尝试以下代码:

   for(i=1;i<3;i++)

检查i是否小于3,因此当i = 1且i = 2时,循环成功。

答案 3 :(得分:0)

如果您希望for循环可执行,则应更改

测试条件i==2i<=2i<3。你的问题将得到解决。

当p的值初始化为1

时,

i==2将评估为false

答案 4 :(得分:0)

在第一个for循环中,条件i==2的计算结果为false,因为i的值为1.因此跳过第一个for循环。

您应该根据自己的要求将其更改为for(int i=1; i<=2; i++)for(int i=1; i<2; i++)