做多少条件可以在做什么?

时间:2014-05-30 14:16:07

标签: c++

我是编程新手 我写了一个c ++程序,我使用do while

do {
    //some code here 
    }while(tolid_mantaghe1 == tolid_safar_mantaghe1
           && tolid_mantaghe2 == tolid_safar_mantaghe2 
           && jazb_mantaghe3 == jazb_safar_mantaghe3 
           && jazb_mantaghe4 == jazb_safar_mantaghe4  );

我知道第一次第一次condtion(tolid_mantaghe1 == tolid_safar_mantaghe1)是真的,但是其他人都是假的,但是这个循环运行一次之后,它的退出似乎从不检查条件我不知道为什么。

3 个答案:

答案 0 :(得分:4)

理论上可以随心所欲。

非正式地,表达式可以包含由运算符&&||分隔的许多表达式。

C ++语法对数字没有限制。

请注意,虽然C ++中的复合表达式是短路的,但是在列表中首先放置易于评估的表达式是有意义的。

答案 1 :(得分:3)

在C ++(以及许多其他语言)中,operator &&是一个逻辑AND运算符,仅当两个条件都为true时才会true。如果任何条件为假,则整个陈述都是错误的。

代码执行一次,因为do while循环在执行后实际测试 end 的条件。如果您在这里使用whilefor循环,则根本不会执行内部代码。

如果您想测试任何条件是否为真,请改用operator ||,这是逻辑OR运算符。这是两个运营商的真值表,取自佛罗里达大学的一个子页面。

enter image description here

答案 2 :(得分:1)

  

当所有这些值相等时,我希望在condtion时停止

C ++中的循环条件不是"停止条件",而是"继续条件"。您需要对循环条件应用布尔否定,因为"重复直到X"转换为"做而不是X":

do
{
    // some code here 
} while (!(tolid_mantaghe1 == tolid_safar_mantaghe1
        && tolid_mantaghe2 == tolid_safar_mantaghe2 
         && jazb_mantaghe3 == jazb_safar_mantaghe3 
         && jazb_mantaghe4 == jazb_safar_mantaghe4));

根据DeMorgan的说法,也可以写成:

do
{
    // some code here 
} while (tolid_mantaghe1 != tolid_safar_mantaghe1
      || tolid_mantaghe2 != tolid_safar_mantaghe2 
       || jazb_mantaghe3 != jazb_safar_mantaghe3 
       || jazb_mantaghe4 != jazb_safar_mantaghe4);