간단한 논리 연산자 질문입니다.(&&관련 질문입니다)
a = 0x95 이고 b = 0xA9 로 가정해볼게요.
그러면 a && b의 값은 왜 1(True)인가요?
a와b의 값이 둘다 0이 아닐때에 그냥 true라고 하는건가요?
(+ a||b의 값은 어떻게 나타내나요?)
미리 감사합니다.
a = 0x95 이고 b = 0xA9 로 가정해볼게요.
그러면 a && b의 값은 왜 1(True)인가요?
라고 질문을 하셨죠?
저 질문 자체가 True and True 라고 질문하신거에요^^
그래서 당연히 True 나오는게 정답이죠
보통 And (&&) 논리 연산자는 아래와 같이 사용을 합니다
A > 3 && A < 5 <== A가 3보다 크고 그리고 A가 5보다 작으면 (참)
A < 3 && B > A <== A가 3보다 작고 그리고 B가 A보다 크면(참)
이렇게 사용을 해야 합니다
근데 (결과) and (결과) 이렇게 논리연산자가 되어버리니 당연히 결과에 0 값이 없는한 전부 참이되어
참이라는 결과가 나옵니다^^
프로그래밍에서 변수의 값이
0x00 (0) 이면 false
그 외 모든 값은 true
가 됩니다.
그래서 위 조건문을 실행하면
a == true , b == true 이므로
true && true 의 조건이 되어 true 가 됩니다.
위 조건이 true 가 나오는 조건은 둘다 0 이 아니어야 합니다.
만약 비트연산이 목적이시면 & 하나만 넣어야 합니다.
그리고 +a 의 의미가 양수인지 체크하는 것이라면 뭐 간단하게 0<a 이런식으로 해도 되고요. 아니면 입력된 변수의 데이터 타입을 보시고 최상위 비트가 1일 경우 음수를 나타내기 때문에 그것으로 음수 양수 확인하셔도 되고요.