我有两个不同的代码,对我来说看起来一样,但它们不是。第一个按我的意愿工作,第二个没有。我不明白为什么。
$base = new PDO('oci:host=localhost;dbname=Schema - HR', 'hr','hr');
$base = new PDO("oci:host=localhost;dbname=Schema - HR", "hr","hr");
$base = new PDO("oci:host=localhost/XE;dbname=Schema - HR", "hr","hr");
$base = new PDO("oci:host=XE;dbname=Schema - HR", "hr","hr");
$base = new PDO('oci:host=localhost;dbname="Schema - HR"', 'hr','hr');
这是第二个。据我了解,do-while循环应该运行,直到num1不等于1,num2不等于2而num3不等于3.
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int num1, num2, num3, i=0;
srand(time(0));
do{
i++;
num1=rand()%3+1;
num2=rand()%3+1;
num3=rand()%3+1;
cout<<i<<"."<<num1<<num2<<num3<<endl;
}while(!((num1==1)&&(num2==2)&&(num3==3)));
}
答案 0 :(得分:4)
问题在于:
while(((num1==1)&&(num2==2)&&(num3==3)));
当所有这三个与您打印的值不同时,while循环将结束。另外,我强烈建议学习bool算法,尤其是De Morgan's Law
!(A&amp;&amp; B)=!A || !B!(A || B)=!A&amp;&amp; !B所以
!((num1==1)&&(num2==2)&&(num3==3))
将转换为
(!(num1==1)||!(num2==2)||!(num3==3))
答案 1 :(得分:0)
第一个程序中do-while语句中的条件
while(!((num1==1)&&(num2==2)&&(num3==3)));
可以等效转换为
while( (num1!=1) || (num2!=2) || (num3 != 3)));
这意味着至少有一个变量不等于1或2或3。
第二个程序中do-while语句中的条件
}while((num1!=1)&&(num2!=2)&&(num3!=3));
表示num1不等于1且num2不等于2且num3不等于3.
显然条件
while( (num1!=1) or (num2!=2) or (num3 != 3)));
和
}while( (num1!=1) and (num2!=2) and (num3!=3));
是不同的。
因此程序的行为不同。:)