虽然循环过早地使用多个条件中断

时间:2016-06-16 20:21:58

标签: c while-loop

我正在用C编写一个小程序,我不希望我的while循环退出,直到满足两个条件。

这是我的问题的一个例子:

int a, b, x;
a = 3;
b = 5;
x = 0;
while(x <= a && x <= b)
    {
        //do stuff
        x++;
    }

x == ax != b时,循环中断。这将评估为false && true,它应返回false,但无论如何它仍然会中断。

为什么我的循环提前结束?

2 个答案:

答案 0 :(得分:4)

你正确回答了一半问题,让我重复并纠正你。

app.get('/api/v1/authenticated/admin/stats/get', function(req, res) { let stats = {}; User.find().count(function(err, count){ stats.userCount = count; console.log('usrCnt inside of db ' + stats.userCount); //defined. Shows in the console after the console.log below. }); console.log('UsrCount outside of db ' + stats.userCount); //undefined res.send(stats); }); x > ax < b)时,循环中断。这将评估为x = 4应返回true && false ,因此循环正在中断。

请注意,使用false时,条件必须为&&,整体条件为true

因此,如果您希望循环在条件均为假时退出 ,则使用true

||

现在,直到条件都是int a, b, x; a = 3; b = 5; x = 0; while(x <= a || x <= b) { //do stuff x++; } ,你的循环应该运行。

答案 1 :(得分:1)

您使用的逻辑CREATE OR REPLACE TRIGGER save_the_grades BEFORE DELETE ON grades FOR EACH ROW DECLARE v_grade number(3); BEGIN SELECT grade INTO v_grade FROM Grades WHERE Names=:old.name; INSERT INTO backup (name, age, grade) VALUES (:old.name, :old.age, v_grade); END; (&amp;&amp;)运算符在此上下文中无效。你的循环没有过早破坏,当x晚于3时它就会破裂,这是正确的。相反,您希望使用逻辑and运算符,该运算符称为双管道(||)