2011-12-29 5 views
0

c에서 숫자의 나눗셈을 검사해야합니다. C에서 modulus operatpr을 사용하여 숫자가 다른 숫자로 나눌 수 있는지 확인하려면 어떻게해야합니까? file_int 9. 내가 잘못 했습니까 무엇C의 모듈러스 연산자

동일하지만,

if (file_int % 3) { 
    printf("Hoppity \n"); 
} 

그것은 작동하지 않았다 : 나는이 일을 시도?

감사합니다.

답변

3

if (file_int % 3) 당신이 원하는 것과 반대 인 if (file_int % 3 != 0), 동일합니다.

if (file_int % 3 == 0) { 
    printf("Hoppity \n"); 
} 
// or 
if (!(file_int % 3)) { 
    printf("Hoppity \n"); 
} 
7

작업이 0을 반환하므로 false로 처리되므로 작동하지 않습니다.

당신은 실제로 필요

if(!(file_int % 3)) { 
    printf("Hoppity \n"); 
} 
+0

설명해 주시겠습니까? –

+0

실제로. 나눌 수있는 경우 0 나머지가 있어야합니다 ('false'와 동일). 그래서 if (! (num % divisor)) 또는'if ((num % divisor) == 0)'(기본으로 반전 거짓 결과가 true 조건에 적용됩니다.) –

+0

'file_int % 3'은 ** indivisibility **에 대한 조건 인'file_int % 3! = 0'과 같습니다. 3에 의한 ** divisibility **는' file_int % 3 == 0' 또는 이와 동등한'! (file_int % 3)'을 사용합니다. – Amadan

1

계수의 결과가 0이면 균등하게 나눕니다. 루프를 계속하기 위해 3으로 나눌 수 없으면 코드 스 니펫으로 자신의 의도를 파악하는 데 충분하지 않더라도 찾고있는 것으로 보입니다.

1

3,으로 나눌 수 있으면 0과 같고 if 블록이 실행되지 않기 때문입니다.

if(file_int % 3 == 0) { 
    // do stuff 
} 
0

이 모드 운영자가 분할로 인한 나머지를 반환보십시오 ... 9없이 나머지 세 가지로 나눌 때문에, 반환 제로 될 것이다.

그러나 조건문은 0이 아닌 경우 true로, 0 인 경우 false로 평가됩니다. 이 파일을 (file_int % 3 == 0)으로 변경해야합니다.