2017-11-22 17 views
-6

다음 코드에서! (X % Y)는 무엇을 반환합니까?모듈로 리턴이란 무엇입니까?

int count = 2; 
bool notprime = false; 
while (count < num) 
{ 
    if (!(num % count)) 
     notprime = true; 
    count++; 
} 

즉, (num % count)가 0 일 때 괄호가 true를 반환합니까? 아니면 거짓일까요? 그리고 코드 에서처럼 그것을 부정하면 (!) 나는 흐름을 이해하는 데 어려움을 겪고 있습니다 ...

+1

입니다.'num % count '가 0이면'num % count '가 1이고, num % count!는 0과 다르며,! (num % count)는 0입니다. 다른 예 :'! 0'은 1,'! 123'은 0,'! 42'는 0,'! 32145'는 0입니다. 다른 단어'! x'는 x = 0 일 때 1이고 다른 모든 x 값인 경우 0입니다. –

+0

그래서 코드 샘플에서! (num % count)의 결과가 1 (true)이면 notprime이 true로 지정됩니까? – Sky7ure

+1

음 ... 분명히 그렇습니다. –

답변

1

은 num과 함께 모듈러스를 제공합니다. 대답이 0이면 false으로 해석되고 1 이상이거나 1보다 크거나 0보다 작 으면 true 값으로 해석됩니다.

따라서 !(num % count)은 부정합니다. 따라서 mod의 결과를 1 또는 1보다 큰 숫자로 얻으면이 값은 무효화되고 !(num % count)의 결과는 false이됩니다. 마찬가지로 mod의 대답이 0이면 부정 확한 결과를 얻고 의 결과는 true

+5

"_1이 아니면 1보다 큰 경우 true로 해석됩니다 _"완전히 정확하지 않습니다. '0'이 아닌 값은 'true'로 해석됩니다. 여기에는 양수, ** 및 음수 ** 값이 모두 포함됩니다. 그것이 쓰여지는 방식에서, 당신에 의해 - 양의 값만이 '참'으로 해석되는 것처럼 보일 것입니다. –

+1

동의합니다. 그는 mod를 사용하기 때문에 음수 값에 대한 기회는 0입니다. –

+1

"그는 mod를 사용하고 있기 때문에 음수 값은 0입니다."잘못된 : 모듈러스 연산자는 C++에서 부정적인 결과를 생성 할 수 있습니다. –