&& 및 || 사용의 차이는 무엇입니까? DO에서… 루프 중?
-
22-07-2019 - |
문제
#include<iostream>
using namespace std;
int main()
{
char again;
do
{
cout<<"you are in the while loop";
cout<<"do you want to continue looping?";
cin>>again;
} while (again != 'n' || again != 'N');
system("pause");
return 0;
}
나는 'While'의 테스트 조건에 문제가 있다는 것을 알고 있습니다. 그러나 나는 그것을 알아낼 수 없다.
사용자의 입력이 'n'이나 'n'이 아닌 경우 루프는 코드를 계속 인쇄해야합니다. 'n'또는 'n'을 눌렀을 때 프로그램이 종료됩니다.
그러나 내 코드의 경우 프로그램은 내가 입력 한 문자에 관계없이 코드를 계속 반복합니다. 그러나 내가 '||'를 바꿀 때 '&&'로, 프로그램은 원하는대로 실행할 수 있습니다. 누구든지 무슨 일이 일어나고 있는지 말해 줄 수 있습니까?
해결책
이것은 일반적인 부울 논리 질문입니다. ||
"또는,"를 의미합니다. "이것의 한쪽이 사실이면 표현이 참입니다." 그래서 당신이 대문자를 통과 할 때 'N'
에게 c != 'n' || c != 'N'
이 프로그램은 "음, 'N'
동일하지 않습니다 'n'
, 그러므로 표현의 한쪽은 사실이므로 전체 표현이 사실이며 표현의 나머지 부분을 확인할 필요가 없습니다. " 'n'
, 프로그램은 "음, 'n'
와 동등하다 'n'
, 그러나 그것은 동일하지 않습니다 'N'
, 그러므로 표현의 한쪽은 사실이므로 전체 표현은 사실입니다. "이것은 당신의 While 루프에서 일어나는 일입니다.
반면에, &&
"표현의 양면이 사실이어야한다"는 의미 "및"이 의미가 있어야한다 "; 대문자를 통과 할 때 'N'
에게 c != 'n' && c != 'N'
이 프로그램은 생각한다 "'N'
동일하지 않습니다 'n'
, 그러나 그것은 동일합니다 'N'
, 따라서 표현의 한쪽만이 사실이므로 표현은 거짓입니다. "
입력 한 캐릭터가 당신이 사용할 특정 값과 같았는지 테스트하는 경우 테스트 중이기 때문에 혼란스러워합니다. ||
(예 : "나는 알고 싶다 'a'
또는 'b'
또는 'c'
").
기본적으로 사용할 때 ||
특정 표현을 위해, 당신은 그 표현의 반대를 원한다면 당신은 &&
(예 : 나는 아무것도 원하지 않습니다 'a'
, 'b'
또는 'c'
; 또는 다른 방법으로 말하면 가치는 'a'
그리고 있을 수없는 일이야 'b'
, 그리고 있을 수없는 일이야 'c'
"). 마찬가지로, 당신이 사용한다면 &&
특정 표현을 위해서는 그 표현의 반대를 원한다면 사용해야합니다. ||
. 이것은 De Morgan의 법칙 중 하나입니다.이 법은 각각을 읽는 것이 좋습니다.
다른 팁
예 : || "또는"및 && is "및"입니다.
모든 캐릭터입니다 어느 하나 "N'N '"또는 "NOT'N '"은 가능할 수 없기 때문입니다. 둘 다 'n'과 'n'은 동시에.
조건을 작성하는 또 다른 (읽기가 더 간단한) 방법은 다음과 같습니다.
!(again == 'n' || again == 'N')
그것은 "반대입니다 (다시 어느 하나 'n'또는 'n') ".
원래 포스터는 지금 행복하지만 다른 답변에서는 이것을 보지 못했습니다.
(true && true ) == true
(true && false) == false
(false && true ) == false
(false && false) == false
(true || true ) == true
(true || false) == true
(false || true ) == true
(false || false) == false
!true == false
!false == true
그게 다야!
나는 당신의 문제를 잘 이해하고 설명은 다음과 같습니다.
do-while 루프는 출구 조건 루프입니다. 이것은 루프의 본문이 항상 먼저 실행된다는 것을 의미합니다. 그런 다음 테스트 조건이 평가됩니다. 테스트 조건이 참이면 프로그램은 루프 본문을 다시 실행합니다. 테스트 조건이 False 인 경우 루프는 종료되고 프로그램 실행은 다음에 다음과 같은 명령문으로 계속됩니다.
코드에서 ''또는 '' '를 누를 때 테스트 조건은 항상 하나의 사실이고 하나는 거짓이되므로 사용하면 || 테스트 조건 (true || false = true)을 만족 시키므로 프로그램이 루프의 본문을 다시 실행합니다. 그러나 &&를 사용하면 (true && false = false)를 제공하면 테스트 조건이 더 이상 통계되지 않으므로 프로그램은 루프 본문을 다시 실행하지 않습니다.
도움이되기를 바랍니다 ..... 프로그래밍을 즐기십시오! Ameraradi
&&는 논리적이며. || 논리적이거나.
(또한, & 조금씩, 그리고 | |는 약간 또는.)
당신은 시도하고 싶을 수도 있습니다 (! (다시 == 'n'|| 다시 == 'n')