2017-04-21 9 views
-1

Lazyfoo.net 튜토리얼에서 SDL을 배우고 있습니다. "32_text_input_and_clipboard_handling"장에서 아래 코드가 어떻게 올바르게 작동하는지 이해할 수 없습니다.SDL/C++ && 연산자 - Lazyfoo 튜토리얼

if(!((e.text.text[0] == 'c' || e.text.text[0] == 'C') && 
    (e.text.text[0] == 'v' || e.text.text[0] == 'V') && 
    SDL_GetModState() & KMOD_CTRL)) 
    { 
    //Append character 
    inputText += e.text.text; 
    renderText = true; 
    } 

이 코드 함수는이에 따라 작동하고, 우리는 Ctrl 키와 C/V 이벤트를받지 못하고 있다는 것을 확인/무시하는 것이다 (나는 아직도 응답을 기다리는 담당자를 lazyfoo하는 메일을 보냈지 만) 튜토리얼,하지만 어떻게? 이 코드에는 두 개의 "& &"연산자가 있으므로 중괄호 안에 코드를 실행하려면 세 가지 조건이 모두 충족되어야합니다. 수단

는 코드 Ctrl 키와 C/V 이미지 아래 당

Image Link for Ctrl + C + v (Ctrl AND c AND v)

대신

같은

Ctrl 키와 C 및 V 무시 아래 이미지

Image Link for Ctrl + C/v (Ctrl AND c OR v)

있지만, 일부는 C++/SDL에서 Ctrl 키와 C/V로 작동하는 방법 ???

+0

if는 부정됩니다. 드 모르간 정리를보세요 –

+1

물건을 나열하는 대신 질문을 제목으로 기술하십시오 –

+0

"ctrl과 c/v"는 무슨 뜻입니까? –

답변

0

if 문은 부정을 위해 !을 사용합니다. 세 조건이 모두 충족되면 부울 값은 true이지만 false 일 경우 부정됩니다. 비슷하게 ctrl + c/v가 눌려지지 않을 때, 3 조건은 부울 값 false를 반환합니다.이 값은 true로 반전되어 if 문 내의 코드가 실행될 수있게합니다.

당신이 될 것이다 영어로이 조건을 작성한다면 : Ctrl + C 및 Ctrl + V를 누르면하지있습니다 합니다.

+0

그게 전부 내 혼란이다, 위의 코드는 Ctrl + c 및 Ctrl + v를 누른 다음 그것은 부정의, 그래서 내 의심의 논리는 Ctrl + c 또는 Ctrl + V를 맞아야한다는 것입니다? – Macs