我是编程新手 我写了一个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)是真的,但是其他人都是假的,但是这个循环运行一次之后,它的退出似乎从不检查条件我不知道为什么。
答案 0 :(得分:4)
理论上可以随心所欲。
非正式地,表达式可以包含由运算符&&
和||
分隔的许多表达式。
C ++语法对数字没有限制。
请注意,虽然C ++中的复合表达式是短路的,但是在列表中首先放置易于评估的表达式是有意义的。
答案 1 :(得分:3)
在C ++(以及许多其他语言)中,operator &&
是一个逻辑AND运算符,仅当两个条件都为true
时才会true
。如果任何条件为假,则整个陈述都是错误的。
代码执行一次,因为do while
循环在执行后实际测试 end 的条件。如果您在这里使用while
或for
循环,则根本不会执行内部代码。
如果您想测试任何条件是否为真,请改用operator ||
,这是逻辑OR运算符。这是两个运营商的真值表,取自佛罗里达大学的一个子页面。
答案 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);