我开始使用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.
谁能告诉我发生了什么?
答案 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==2
为i<=2
或i<3
。你的问题将得到解决。
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++)
。